'code': 20000 } def delete(self): """ 删除文章 """ parse = reqparse.RequestParser() parse.add_argument('article_id', type = int, required = True) args = parse.parse_args() article = Article.query.filter_by( article_id = args.article_id ).first() if not article: return { 'code': 20001, 'message': '该文章不存在' } db.session.delete(article) db.session.commit() return { 'code': 20000 } api.add_resource(ArticleOptions, '/article/options')
from server import api, app from flask_restful import Resource from flask import send_from_directory, send_file from datetime import datetime import os class Download(Resource): # url下载 def get(self, filename): return send_from_directory(os.path.join(app.root_path, 'uploads'), filename) # 文件流下载 def post(self): filename = g.username + str(datetime.now().strftime('%Y-%m-%d')) + '.xlsx' # 自行生成file_stream file_stream = '文件流' return send_file( file_stream, as_attachment = True, attachment_filename = filename ) api.add_resource(Download, '/file/uploads')
user = User.query.filter_by(email=form.email.data).first() if user and flask_bcrypt.check_password_hash(user.password, form.password.data): return UserSerializer(user).data, 201 return '', 401 class PostListView(restful.Resource): def get(self): posts = Post.query.all() return PostSerializer(posts, many=True).data @auth.login_required def post(self): form = PostCreateForm() if not form.validate_on_submit(): return form.errors, 422 post = Post(form.title.data, form.body.data) db.session.add(post) db.session.commit() return PostSerializer(post).data, 201 class PostView(restful.Resource): def get(self, id): posts = Post.query.filter_by(id=id).first() return PostSerializer(posts).data api.add_resource(UserView, '/users') api.add_resource(SessionView, '/sessions') api.add_resource(PostListView, '/posts') api.add_resource(PostView, '/posts/<int:id>')
def put(self, id, sub_id): user = User.query.filter_by(id=id).first() subscribe = Subscribe.query.filter_by(id=sub_id).first() if user and subscribe: # PUT param self.reqparse = reqparse.RequestParser() self.reqparse.add_argument('tags', type = str, location = 'json') args = self.reqparse.parse_args() subscribe.tags = args['tags'] subscribe.user = user db.session.commit() result = subscribe_schema.dump(subscribe.query.get(subscribe.id)) return jsonify({"subscribe": result.data}) else: return error_serializers('Record not found!', 404), 404 def get(self, id, sub_id): user = User.query.filter_by(id=id).first() subscribe = Subscribe.query.filter_by(id=sub_id).first() if user and subscribe: subscribe.user = user result = subscribe_schema.dump(subscribe) return jsonify({"subscribe": result.data}) else: return error_serializers('Record not found!', 404), 404 api.add_resource(LocationView,'/users/<int:user_id>/location') api.add_resource(InvitationsView,'/users/<int:user_id>/invitations') api.add_resource(InvitationView,'/invitations/<int:invitation_id>') api.add_resource(UserSubAddView, '/users/<int:id>/subscribe') api.add_resource(UserSubView, '/users/<int:id>/subscribe/<int:sub_id>')
from server import api from flask_restful import Resource from flask_restful import reqparse requestTotal = 0 class Normal(Resource): def get(self): global requestTotal requestTotal += 1 print(requestTotal) return {"data": requestTotal} api.add_resource(Normal, "/")
from server import api, redis from flask_restful import Resource, reqparse class UserInfo(Resource): """获取用户信息 """ def __init__(self): self.parser = reqparse.RequestParser() self.parser.add_argument('token', type=str) def get(self): data = self.parser.parse_args() user_info = redis.get(data.get('token')) return { 'code': 20000, 'data': { 'avatar': '...', 'username': user_info.get('username'), 'role': user_info.get('role'), 'id': user_info.get('id') } } api.add_resource(UserInfo, '/user/info')
@login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) # Unauthorised handler @login_manager.unauthorized_handler def unauthorized(): return jsonify( {'error': 'You must login first in order to access that route.'}) from apimodels import (Scan, ScanReport, UserReports, Authentication, Register, StandardCheckpoints) base_api_url = '/api/v1' api.add_resource(Scan, f'{base_api_url}/scans') api.add_resource(UserReports, f'{base_api_url}/user/<userid>/reports') api.add_resource(ScanReport, f'{base_api_url}/user/<userid>/reports/<reporthid>') api.add_resource(Authentication, f'{base_api_url}/authenticate') api.add_resource(Register, f'{base_api_url}/register') api.add_resource(StandardCheckpoints, f'{base_api_url}/standard-checkpoints') @app.route('/', defaults={'path': ''}) @app.route('/<path:path>') def home(path): return "Nothing to see here :) @j-000" if __name__ == "__main__":
from server import api, db from server.models import User from flask_restful import Resource, reqparse from flask import g from server.utils.encrytion import convert_to_md5 class ChangePass(Resource): # 更换密码 def post(self): parse = reqparse.RequestParser() parse.add_argument('old_pass', type=str, required=True) parse.add_argument('new_pass', type=str, required=True) args = parse.parse_args() old_pass = convert_to_md5(args.old_pass) new_pass = convert_to_md5(args.new_pass) user_info = User.query.fileter_by(uid=g.uid).first() if old_pass != user_info.password: return {'code': 50008, 'message': '原密码不对'} user_info.password = new_pass db.session.commit() return {'code': 20000} api.add_resource(ChangePass, '/user/repass')
if (g.user.role & 1) == 0: return make_response(jsonify({"error": "Not authorized"}), 403) user = User.query.filter_by(email=form.email.data).first() if user == None: return make_response(jsonify({"error": "user not found"}), 400) if form.rfidTagId.data != None and form.rfidTagId.data != "": print "Withdraw cardID " + form.rfidTagId.data + " from " + user.firstName + " " + user.lastName user.cardID = "" db.session.commit() return "", 201 api.add_resource(SessionView, "/sessions") api.add_resource(UserView, "/user/<int:id>") api.add_resource(UserListView, "/users") api.add_resource(LogUserView, "/log/user") api.add_resource(LogAdminView, "/log/admin") api.add_resource(DoorView, "/door/<int:id>") api.add_resource(DoorRegistrationView, "/door") api.add_resource(DoorListView, "/doors") api.add_resource(OpeningRequestView, "/request/opening") api.add_resource(LostPasswordView, "/request/password") api.add_resource(DoorInfoView, "/request/doorinfo") api.add_resource(RfidTagInfoView, "/tag/info") api.add_resource(RfidTagAssignView, "/tag/assign") api.add_resource(RfidTagWitdrawView, "/tag/withdraw") api.add_resource(RegisterUserView, "/register")
__author__ = 'sravi' from server import api from views.views import * api.add_resource(HelloWorld, '/now') api.add_resource(HelloLater, '/later') api.add_resource(ScheduledQueue, '/tasks') api.add_resource(QueryTask, '/query')
if g.user.role != 1: if g.user.role != 2: return '', 401 stats = Statistic.query.filter(Statistic.id == id).first() if stats is None: return '', 405 statsEntries = StatisticEntry.query.filter(StatisticEntry.statId == stats.statId).all() if statsEntries is None: return '', 405 return StatisticEntryListSerializer().dump(statsEntries, many=True).data api.add_resource(SessionView, '/sessions') api.add_resource(UserView, '/user/<int:id>') api.add_resource(UserListView, '/users') api.add_resource(AdminsListView, '/admins') api.add_resource(LogUserView, '/actions/user') api.add_resource(LogAdminView, '/actions/admin') api.add_resource(LogDebugView, '/actions/debug') api.add_resource(DoorView, '/door/<int:id>') api.add_resource(DoorSyncView, '/door/<int:id>/sync') api.add_resource(DoorRegistrationView, '/door') api.add_resource(DoorListView, '/doors') api.add_resource(StatisticsListView, '/statistics')
from server.helpers.sessions import current_user from server.helpers.emails import new_enrollment_email class EnrollmentsAPI(Resource): def __init__(self): self.reqparse = reqparse.RequestParser() self.reqparse.add_argument('number_players') super(EnrollmentsAPI, self).__init__() def post(self, team_id): if not current_user(): return 'You need to be logged in', 403 args = self.reqparse.parse_args() args['team_id'] = team_id try: enrollment = Enrollment(args) db.session.add(enrollment) db.session.commit() except Exception as e: return str(e), 400 new_enrollment_email(team_id) return 'Enrolled successfully', 201 api.add_resource( EnrollmentsAPI, '/teams/<int:team_id>/enrollments', endpoint='enrollments' )
continue data1.append(eval(br.data)) j += 1 if UserLocked.query.all() == []: id=1 else: id = UserLocked.query.order_by(desc(UserLocked.id)).first().id + 1 lock = LockView(id=id,uid=user.uid,year=year,month=month,data=str(year_sum(data1))) db.session.add(lock) db.session.commit() api.add_resource(UserListView, '/api/v1/shareholder') api.add_resource(UserView,'/api/v1/shareholder/<int:uid>') api.add_resource(UserNameView, '/api/v1/holdername') api.add_resource(LoginView, '/api/v1/login') api.add_resource(RegView,'/api/v1/register') api.add_resource(StoreListView,'/api/v1/stores') api.add_resource(StoreView,'/api/v1/stores/<int:sid>') api.add_resource(AccountListView,'/api/v1/accountbook') api.add_resource(HeadAccountView,'/api/v1/headaccountbook/<int:year>/<int:month>') api.add_resource(BranchAccountView,'/api/v1/branchaccountbook/<int:sid>/<int:year>/<int:month>') api.add_resource(BranchYearView,'/api/v1/branchaccountbook/<int:sid>/<int:year>') api.add_resource(HeadYearView,'/api/v1/headaccountbook/<int:year>') api.add_resource(AccountAllView,'/api/v1/accountall/<int:year>') api.add_resource(AccountHolderView,'/api/v1/accountbook/<int:uid>/<int:year>') api.add_resource(LockView,'/api/v1/lock/<int:sid>/<int:year>/<int:month>')
class UserAPI(Resource): def get(self, id): user = User.query.get(id) if not user: return 'User not found', 404 return {'user': marshal(user, user_fields)} class UsersAPI(Resource): def __init__(self): self.reqparse = reqparse.RequestParser() self.reqparse.add_argument('username') self.reqparse.add_argument('email') self.reqparse.add_argument('password') super(UsersAPI, self).__init__() def post(self): args = self.reqparse.parse_args() try: user = User(args) db.session.add(user) db.session.commit() session['user_id'] = user.id except Exception as e: return str(e), 400 return {'user_id': user.id, 'message': 'User created successfully'}, 201 api.add_resource(UserAPI, '/users/<int:id>', endpoint='user') api.add_resource(UsersAPI, '/users', endpoint='users')
class Supply(Resource): @stats.rest def get(self): data = General().supply() return utils.response(data) class SupplyPlain(Resource): @stats.rest def get(self): data = int(utils.amount(General().supply()['supply'])) return Response(str(data), mimetype='text/plain') api.add_resource(GetInfo, '/info') api.add_resource(BlockByHeight, '/height/<int:height>') api.add_resource(HashByHeight, '/hash/<int:height>') api.add_resource(BlockByHash, '/block/<string:bhash>') api.add_resource(BlockHeader, '/header/<string:bhash>') api.add_resource(BlocksByRange, '/range/<int:height>') api.add_resource(AddressBalance, '/balance/<string:address>') api.add_resource(AddressMempool, '/mempool/<string:address>') api.add_resource(AddressUnspent, '/unspent/<string:address>') api.add_resource(AddressHistory, '/history/<string:address>') api.add_resource(TransactionInfo, '/transaction/<string:thash>') api.add_resource(DecodeRawTx, '/decode/<string:raw>') api.add_resource(MempoolInfo, '/mempool') api.add_resource(SupplyPlain, '/supply/plain') api.add_resource(Supply, '/supply') api.add_resource(EstimateFee, '/fee')
from server import (app, api) from views import (UrlShorter, UrlRedirect) # NGINX will only route traffic to the backend # that starts with /B or has any ?query=value, # even though the route below catched anything after /. api.add_resource(UrlShorter, '/') # This is the route that catched /B<anything> api.add_resource(UrlRedirect, '/<identifier>') if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
from server import api from server.resources.student_list import StudentList from server.resources.teacher_list import TeacherList from server.resources.course_list import CourseList from server.resources.course import Course from server.resources.login import Login from server.resources.quiz_list import QuizList from server.resources.quiz import Quiz api.add_resource(StudentList, "/students/") api.add_resource(TeacherList, "/teachers/") api.add_resource(CourseList, "/courses/") api.add_resource(Course, "/courses/<int:course_id>") api.add_resource(Login, "/login/") api.add_resource(QuizList, "/quiz/<int:course_id>") api.add_resource(Quiz, "/quiz/<int:course_id>/<int:question_no>")
from server import api from server.resources import GetFile, PostFile, ProjectResource, TextflowResource, Random api.add_resource(GetFile, "/api/file/get/<int:file_id>") api.add_resource(PostFile, "/api/file/upload/<int:project_id>") api.add_resource(ProjectResource, "/api/project/<int:project_id>") api.add_resource(TextflowResource, "/api/text_flow/<int:id>") api.add_resource(Random, "/api/random")
return '', 401 stats = Statistic.query.filter(Statistic.id == id).first() if stats is None: return '', 405 statsEntries = StatisticEntry.query.filter( StatisticEntry.statId == stats.statId).all() if statsEntries is None: return '', 405 return StatisticEntryListSerializer().dump(statsEntries, many=True).data api.add_resource(SessionView, '/sessions') api.add_resource(UserView, '/user/<int:id>') api.add_resource(UserListView, '/users') api.add_resource(AdminsListView, '/admins') api.add_resource(LogUserView, '/actions/user') api.add_resource(LogAdminView, '/actions/admin') api.add_resource(LogDebugView, '/actions/debug') api.add_resource(DoorView, '/door/<int:id>') api.add_resource(DoorSyncView, '/door/<int:id>/sync') api.add_resource(DoorRegistrationView, '/door') api.add_resource(DoorListView, '/doors') api.add_resource(StatisticsListView, '/statistics')
'fromEmailKey': '', 'toEmail': '' } """ data = request.get_json(force = True) # 先判断该用户设置是否存在 check = MailConfig.query.filter_by(ownerId = g.userId).first() if check: check.fromName = data.get('fromName') check.toName = data.get('toName') check.fromEmail = data.get('fromEmail') check.fromEmailKey = data.get('fromEmailKey') check.toEmail = data.get('toEmail') else: config = MailConfig( fromName = data.get('fromName'), toName = data.get('toName'), fromEmail = data.get('fromEmail'), fromEmailKey = data.get('fromEmailKey'), toEmail = data.get('toEmail'), ownerId = g.userId ) db.session.add(config) db.session.commit() return { 'code': 20000 } api.add_resource(MailConfigClass, '/mailconfig')
password, str(time.time()) )) # 将信息写入redis redis.set(token, { 'uid': user_info_check.uid, 'username': user_info_check.username }) return { 'code': 20000, 'data': { 'token': token } } class Logout(Resource): def post(self): redis.delete(g.token) return { 'code': 20000 } api.add_resource(Login, '/user/login') api.add_resource(Logout, '/user/logout')
self.current_time = datetime.datetime.now().strftime('%Y-%m-%d') def option(self): return {'code': 20000} def get(self): advice = Other.query.filter_by(ownerId=g.userId, time=str(self.current_time)).first() if advice: data = advice.advice else: data = '' return {'code': 20000, 'data': data} def post(self): data = request.get_json(force=True) advice = data.get('advice') check_advice = Other.query.filter_by(ownerId=g.userId, time=str( self.current_time)).first() if check_advice: check_advice.advice = advice else: new_advice = Other(advice=advice, ownerId=g.userId) db.session.add(new_advice) db.session.commit() return {'code': 20000} api.add_resource(Advice, '/advice')
class TeamsAPI(Resource): def __init__(self): self.reqparse = reqparse.RequestParser() self.reqparse.add_argument('name') self.reqparse.add_argument('capacity') self.reqparse.add_argument('number_players') self.reqparse.add_argument('pitch_postcode') self.reqparse.add_argument('time') super(TeamsAPI, self).__init__() def get(self): teams = Team.query.filter(Team.number_players < Team.capacity, Team.time > datetime.now()).order_by(Team.time) return {'teams': [marshal(team, team_fields) for team in teams]} def post(self): if not current_user(): return 'You need to be logged in', 403 args = self.reqparse.parse_args() try: team = Team(args) db.session.add(team) db.session.commit() except Exception as e: return str(e), 400 return 'Team created successfully', 201 api.add_resource(TeamAPI, '/teams/<int:id>', endpoint='team') api.add_resource(TeamsAPI, '/teams', endpoint='teams')
# -*- coding: utf-8 -*- from server import api from server.resources import EngineResource, EnginesResource, TaskResource api.add_resource(EngineResource, '/engines/<engine_id>') api.add_resource(EnginesResource, '/engines/') api.add_resource(TaskResource, '/tasks/<task_id>')
} return response class SurveyView(restful.Resource): def post(self): args = parser.parse_args() response = {} survey = Survey(args['code'], args['proficiency'], args['experience'], args['education'], args['interrupted']) db.session.add(survey) db.session.commit() response['error'] = False response['survey'] = { 'code': survey.code, 'proficiency': survey.proficiency, 'experience': survey.experience, 'education': survey.education, 'interrupted': survey.interrupted } return response api.add_resource(AccessView, '/api/v1/access') api.add_resource(RefreshersView, '/api/v1/refreshers') api.add_resource(ActivityView, '/api/v1/activities') api.add_resource(TrialView, '/api/v1/trials') api.add_resource(SurveyView, '/api/v1/surveys')
args = self.reqparse.parse_args() user.wish = args['wish'] db.session.commit() return user_wish_serializers(id, user.wish) else: return error_serializers('User not found!', 404), 404 class TagsView(Resource): def get(self): # industry_tags = Tag.query.filter_by(parent_id=1).all() # result['industry'] = tags_schema.dump(industry_tags).data # # company_tags = Tag.query.filter_by(parent_id=2).all() # result['company'] = tags_schema.dump(company_tags).data # # title_tags = Tag.query.filter_by(parent_id=3).all() # result['title'] = tags_schema.dump(title_tags).data return {"industry": [{"name":"Internet"}, {"name":"Design"}, {"name":"Medical"}, {"name":"Oil"}], "company":[{"name":"LinkedIn"}, {"name":"Google"}, {"name":"Apple"}], "title":[{"name":"Designer"}, {"name":"Software Engineer"}, {"name":"Software Engineer Internship"}] } api.add_resource(UserAddView, '/users') api.add_resource(UserView, '/users/<int:id>') api.add_resource(UserWishView, '/users/<int:id>/wish') api.add_resource(TagsView, '/tags')
from server import app, api from apimodels import ( UserResource, Authentication ) api.add_resource(UserResource, '/api/user') api.add_resource(Authentication, '/api/auth') @app.route('/') def home(): return 'go to /api' if __name__ == '__main__': app.run(debug=True)
def delete(self, taskid): target_task = Task.query.filter_by(id=taskid).first() mult_tasks = Task.query.filter_by( title=target_task.title, from_user_id=target_task.ownerId).all() for task in mult_tasks: db.session.delete(task) db.session.commit() return {'code': 20000} def post(self, taskid): """修改任务 data: { 'id': 1, 'title': 'xxx', 'status': True } """ data = request.get_json(force=True) target_task = Task.query.filter_by(id=taskid).first() mult_tasks = Task.query.filter_by( title=target_task.title, from_user_id=target_task.ownerId).all() for task in mult_tasks: task.title = data.get('title') task.status = data.get('status') db.session.commit() return {'code': 20000} api.add_resource(OptionOneTask, '/task/<int:taskid>')
if asesi is not None: asesi.nama = request.form['nama'] db.session.commit() return jsonify(response=201) else: return jsonify(response=204) def delete(self,id_asesi): asesi = Asesi.query.filter_by(id=request.form['id']).first() if asesi is not None: db.session.delete(asesi) db.session.commit() return jsonify(response=202) else: return jsonify(response=204) class AsesiServiceList(Resource): def get(self): return jsonify(list_asesi = [dict(id=asesi.id,nama=asesi.nama) for asesi in Asesi.query.all()]) def post(self): try: a = Asesi(id=request.form['id'],nama=request.form['nama']) db.session.add(a) db.session.commit() return jsonify(response=201) except Exception as e: return jsonify(response=304,error=e) api.add_resource(AsesiService,'/asesi/<id_asesi>') api.add_resource(AsesiServiceList,'/asesi/')
def create_services(): # Generator api.add_resource(AdfPackage, "/gen/adf-package") api.add_resource(BxPackage, "/gen/bx-package") api.add_resource(CreatePackageData, "/gen/package-data") api.add_resource(LoadCommand, "/gen/load-command") api.add_resource(Tcd, "/gen/tcd") api.add_resource(TcdField, "/gen/tcd-field") # Substitute api.add_resource(Substitute, "/sub/text") api.add_resource(Case, "/sub/case") # Formatter api.add_resource(Format_Table, "/fmt/table") api.add_resource(Format_Pivot, "/fmt/pivot") # Templater api.add_resource(CreateTemplate_Basic, "/templater/create-basic") api.add_resource(ApplyTemplate_Basic, "/templater/apply-basic") # Builder api.add_resource(Generate, "/builder/generate")
class FileUpload(restful.Resource): def post(self): file = request.files['file'] if file and allowed_file(file.filename): filename = secure_filename(file.filename) import time prename = time.strftime(r"%Y-%m-%d_%H-%M-%S",time.localtime()) filename=prename+filename file.save(os.path.join(file_path, filename)) return jsonify(filename=filename) def get(self): uploads = Upload.query.all() return jsonify() def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1] in file_type api.add_resource(UserView, '/api/v1/users') api.add_resource(SessionView, '/api/v1/sessions') api.add_resource(PostListView, '/api/v1/posts') api.add_resource(PostView, '/api/v1/posts/<int:id>') api.add_resource(FileUpload, '/api/v1/upload')
# @jwt_required # def delete(self, id): # user = User.from_secret(get_jwt_identity()) # if not user: # return {"msg": "Token has expired"}, 401 # # user.reset_client_secret() # pprint(get_raw_jwt()) # new_token = user.generate_access_token() # return { # "message": "Client secret reset, all access and refresh tokens invalidated", # "access_token": new_token, # }, 200 # api.add_resource(ShipListAPI, '/api/ships', endpoint='ships_api') api.add_resource(ShipAPI, '/api/ships/<int:id>', endpoint='ship_api') api.add_resource(EngineListAPI, '/api/engines', endpoint='engines_api') api.add_resource(EngineAPI, '/api/engines/<int:id>', endpoint='engine_api') api.add_resource(BuilderListAPI, '/api/builders', endpoint='builders_api') api.add_resource(BuilderAPI, '/api/builders/<int:id>', endpoint='builder_api') api.add_resource(ShipTypeListAPI, '/api/ship_types', endpoint='ship_types_api') api.add_resource(ShipTypeAPI, '/api/ship_types/<int:id>', endpoint='ship_type_api') api.add_resource(ShipStatusListAPI, '/api/ship_statuses', endpoint='ship_statuses_api') api.add_resource(ShipStatusAPI, '/api/ship_statuses/<int:id>', endpoint='ship_status_api')
from flask import request from flask_restful import Resource import requests from random import randrange def ask_processing(to_process): """ changes capitalization of letters at random """ to_output = "" for letter in to_process: if randrange(0, 2) is 1: to_output += letter.capitalize() else: to_output += letter return to_output class GetQuote(Resource): def post(self): user_input = request.get_json() response = ask_processing(user_input["user_input"]) return response api.add_resource(GetQuote, "/getquote/") if __name__ == "__main__": app.run(port=5001, debug=True)
"""新增任务 data: { 'user_list': [ { 'id': 1, 'username': '******' } ] 'title': 'xxx', } """ data = request.get_json(force=True) user_list = data.get('user_list') for user in user_list: new_task = Task(title=data.get('title'), ownerId=user.get('id'), from_user_id=g.userId) db.session.add(new_task) db.session.commit() target_task = Task.query.filter_by(title=data.get('title'), ownerId=g.userId).first() return { 'code': 20000, # 返回新增任务的id 'data': target_task.id } api.add_resource(OptionTask, '/task')
from server import db, api from flask import Blueprint, request, jsonify, make_response from flask.ext.restful import Resource, Api, abort class KropotkinEndpoint(Resource): def get(self): query="SELECT paragraph FROM kropotkin OFFSET floor(random()*(select count(*) from kropotkin)) LIMIT 1;" result = db.engine.execute(query) for row in result: response = jsonify({"paragraph": row[0]}) response.status_code = 200 return response return 400 api.add_resource(KropotkinEndpoint, '/api/kropotkin', endpoint = 'kropotkin')
self.reqparse.add_argument('username') self.reqparse.add_argument('password') super(SessionsAPI, self).__init__() def get(self): if 'user_id' in session: return {'user': marshal(current_user(), user_fields)} return 'No session set', 200 def post(self): args = self.reqparse.parse_args() user = User.query.filter_by(username=args['username']).first() session.clear() if user: if User.verify_password(user, args['password']): session['user_id'] = user.id return { 'user_id': user.id, 'message': 'Logged in successfully' }, 201 return 'Invalid username or password', 400 def delete(self): if 'user_id' in session: session.clear() return 'Logged out successfully', 200 return 'You are not logged in', 400 api.add_resource(SessionsAPI, '/sessions', endpoint='sessions')
from server import db, api from flask import Blueprint, request, jsonify, make_response from flask.ext.restful import Resource, Api, abort class KropotkinEndpoint(Resource): def get(self): query = "SELECT paragraph FROM kropotkin OFFSET floor(random()*(select count(*) from kropotkin)) LIMIT 1;" result = db.engine.execute(query) for row in result: response = jsonify({"paragraph": row[0]}) response.status_code = 200 return response return 400 api.add_resource(KropotkinEndpoint, '/api/kropotkin', endpoint='kropotkin')
class TrialView(restful.Resource): def post(self): args = parser.parse_args() response = {} trial = Trials(args['code'], args['snippet_id'], args['time'], args['is_correct']) db.session.add(trial) db.session.commit() response['error'] = False response['attempt'] = {'code':trial.access_code, 'snippet_id':trial.snippet_id, 'time':trial.time_elapsed, 'is_correct':trial.is_correct} return response class SurveyView(restful.Resource): def post(self): args = parser.parse_args() response = {} survey = Survey(args['code'], args['proficiency'], args['experience'], args['education'], args['interrupted']) db.session.add(survey) db.session.commit() response['error'] = False response['survey'] = {'code': survey.code, 'proficiency':survey.proficiency, 'experience':survey.experience, 'education':survey.education, 'interrupted':survey.interrupted} return response api.add_resource(AccessView, '/api/v1/access') api.add_resource(RefreshersView, '/api/v1/refreshers') api.add_resource(ActivityView, '/api/v1/activities') api.add_resource(TrialView, '/api/v1/trials') api.add_resource(SurveyView, '/api/v1/surveys')
except ValidationError as err: resp = jsonify({"error": err.messages}) resp.status_code = 403 return resp except SQLAlchemyError as e: db.session.rollback() resp = jsonify({"error": str(e)}) resp.status_code = 403 return resp #shareable_blueprint = Blueprint('shareable_print',__name__, url_prefix='/api/shareables') #api = Api(shareable_blueprint) #api.add_resource(ShareableListEndpoint, '') api.add_resource(ShareableListEndpoint, '/api/shareables', endpoint = 'shareables') api.add_resource(ShareableEndpoint, '/api/shareable/<int:id>', endpoint = 'shareable') api.add_resource(ShareableCategorizationEndpoint, '/api/shareables/categorization', endpoint = 'categorization') api.add_resource(ShareableSearchEndpoint, '/api/shareables/search', endpoint = 'search') ''' from flask import Flask, Blueprint from flask.ext import restful class HelloWorld(restful.Resource): def get(self): return {'hello': 'world'} blueprint = Blueprint('my_blueprint', __name__) api = restful.Api(blueprint, prefix="/blueprint")
class OptionOneTomorrowTask(Resource): """对单个任务进行删除和修改 """ def option(self): return {'code': 20000} def delete(self, taskid): target_task = Task.query.filter_by(id=taskid).first() db.session.delete(target_task) db.session.commit() return {'code': 20000} def post(self, taskid): """修改任务 data: { 'id': 1, 'title': 'xxx', 'status': True } """ data = request.get_json(force=True) new_task = Task.query.filter_by(id=taskid).first() new_task.title = data.get('title') new_task.status = data.get('status') db.session.commit() return {'code': 20000} api.add_resource(OptionOneTomorrowTask, '/tomorrowtask/<int:taskid>')
import os import json import pytest os.environ['TEST'] = '1' if os.path.exists('test.db'): os.remove('test.db') from server.api import * from server.models import * from server.main import app, db, api api.add_resource(LoginEndpoint, '/login') api.add_resource(RegisterEndpoint, '/register') api.add_resource(UsersEndpoint, '/users') api.add_resource(UserEndpoint, '/users/<user_id>') api.add_resource(CurrentUserEndpoint, '/current-user') api.add_resource(UserWorkEntriesEndpoint, '/work-entries/<user_id>') api.add_resource(WorkEntryEndpoint, '/work-entries/<work_entry_id>') @pytest.fixture(autouse=True) def tear_up_down_db(): db.create_all() yield db.drop_all()
def init_routes(): api.add_resource(TestResource, "/api/test") api.add_resource(HostResource, "/api/host")
from server import api from flask_restful import Resource from server.models import User class UserList(Resource): def option(self): return { 'code': 20000 } def get(self): user_list = User.query.all() return { 'code': 20000, 'data': [ { 'id': item.id, 'username': item.username } for item in user_list ] } api.add_resource(UserList, '/user/list')
class SessionsAPI(Resource): def __init__(self): self.reqparse = reqparse.RequestParser() self.reqparse.add_argument('username') self.reqparse.add_argument('password') super(SessionsAPI, self).__init__() def get(self): if 'user_id' in session: return {'user': marshal(current_user(), user_fields)} return 'No session set', 200 def post(self): args = self.reqparse.parse_args() user = User.query.filter_by(username=args['username']).first() session.clear() if user: if User.verify_password(user, args['password']): session['user_id'] = user.id return {'user_id': user.id, 'message': 'Logged in successfully'}, 201 return 'Invalid username or password', 400 def delete(self): if 'user_id' in session: session.clear() return 'Logged out successfully', 200 return 'You are not logged in', 400 api.add_resource(SessionsAPI, '/sessions', endpoint='sessions')