• 关于

    restful_api

    的搜索结果

问题

如何在任何python框架中使用python flask RESTful API

祖安文状元 2020-02-21 14:28:53 0 浏览量 回答数 1

回答

如果使用Flask的make_response返回响应实例,则可以正常工作: from flask import jsonify, Flask, make_response from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) class Text(Resource): def get(self): textInput = u'\u0960' return make_response(textInput) api.add_resource(Text, '/') if __name__ == '__main__': app.run(debug=True) 回答来源:stackoverflow

is大龙 2020-03-23 16:13:58 0 浏览量 回答数 0

问题

flask_restful-TypeError:Record类型的对象不是JSON可序列化的

is大龙 2020-03-24 20:29:16 0 浏览量 回答数 1

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

问题

Flask:无法在网页中呈现Unicode字符

is大龙 2020-03-23 16:13:54 0 浏览量 回答数 1

回答

Restful其实就是一套编写接口的'风格规范',规定如何编写以及如何设置返回值、状态码等信息。 最显著的特点: # 用Restful: 给用户一个url,再根据不同的method在后端做不同的处理 比如:post创建数据、get获取数据、put和patch修改数据、delete删除数据。 # 不用Restful: 给调用者很多url,每个url代表一个功能,比如:add_user/delte_user/edit_user/ # 当然,还有其他的,比如: '版本' 来控制让程序有多个版本共存的情况,版本可以放在 url、请求头(accept/自定义)、GET参数 '状态码' 200/300/400/500 'url中尽量使用名词' restful也可以称为“面向资源编程” 'api标示' api.luffycity.com www.luffycity.com/api/

珍宝珠 2019-12-02 03:20:26 0 浏览量 回答数 0

问题

阿里云存储OSS之九大使用技巧之:环境准备

newegg11 2019-12-01 20:23:24 8830 浏览量 回答数 4

问题

如何在Fluter上使用Flask Api

is大龙 2020-03-25 00:11:58 1 浏览量 回答数 1

问题

post请求返回302是为什么

游客irm3nny572smk 2019-12-01 19:36:13 685 浏览量 回答数 2

问题

如何设计RESTful的API权限

蛮大人123 2019-12-01 20:02:10 1757 浏览量 回答数 1

问题

低级接口的使用

云栖大讲堂 2019-12-01 21:09:01 1648 浏览量 回答数 1

问题

用户指南- 典型应用 -开放搜索

李沃晟 2019-12-01 21:39:48 570 浏览量 回答数 0

回答

推荐看看这个介绍: http://www.ruanyifeng.com/blog/2014/05/restful_api.html 调试的话,chrome和ff都有插件可以做。 http://xxx.com/users/?page=10&page_size=30 这种写法是对的,问号后面都是filters。 GET:http://xxx.com/users/?page=10&page_size=30   获取第10页的用户,每页30个。 POST: http://xxx.com/users/ 新建1个用户。 PUT:http://xxx.com/users/id/ 更新某个用户。 DELETE:http://xxx.com/users/id/ 删除某个用户。 ######现在有很多工具都可以支持restful 测试  比如postman ######restful web 应用基于Ajax。###### 首先需要明白的是RESTful是一种架构风格,和SOAP、XML-RPC差不多只是比较简洁一点而已,这一点在阮一峰的博客里面说的很多,你可以去他的博客里面看看,不过更推荐你去看一下Fielding的那个论文。 http://www.ruanyifeng.com/blog/2014/05/restful_api.html http://www.ruanyifeng.com/blog/2011/09/restful 你描述的问题我想应该是获取某一页的用户列表吧,按照常见的风格 GET /users?page=10&page_size=30 这样来获取列表的都可以说是RESTful风格。 ######回复 @仁江 : - 赶上互联网发展的一个好时间,SOAP那些实现起来太麻烦,需要有一个比较简洁的又都可以接受的风格,你可以看出来,RESTful只是说明了一种风格而并非新的协议。 - Fielding的影响力我觉得也有一部分关系######但是我不明白他有什么进步的地方,有什么用?地址好看了一点?为什么就热了起来,大家都在说,大家都慢慢的趋向###### 1. URL 更漂亮 2. GET,POST,PUT,DELETE 等对资源的操作目的很明确,统一,不需要自己在 URL 里指定如 xxx/yyy?action=edit 3. 对搜索引擎更友好 基本就这些,和非 RESTful 的风格没有本质的区别。 ######postman,soapui

爱吃鱼的程序员 2020-06-04 16:21:17 0 浏览量 回答数 0

回答

设计RESTful API时要注意的一点是GET和POST的合并,就好像它们是同一件事一样。使用Django的基于函数的视图和CherryPy的默认调度程序很容易犯此错误,尽管这两个框架现在都提供了解决此问题的方法(分别基于类的视图和MethodDispatcher)。 HTTP动词在REST 中非常重要,除非对此非常小心,否则最终会陷入REST反模式。 一些正确的框架是web.py,Flask和Bottle。当与mimerender库结合使用时(充分披露:我写了它),它们使您可以编写漂亮的RESTful Web服务: import web import json from mimerender import mimerender render_xml = lambda message: '<message>%s</message>'%message render_json = lambda **args: json.dumps(args) render_html = lambda message: '<html><body>%s</body></html>'%message render_txt = lambda message: message urls = ( '/(.*)', 'greet' ) app = web.application(urls, globals()) class greet: @mimerender( default = 'html', html = render_html, xml = render_xml, json = render_json, txt = render_txt ) def GET(self, name): if not name: name = 'world' return {'message': 'Hello, ' + name + '!'} if __name__ == "__main__": app.run() 该服务的逻辑仅实现一次,并且正确的表示选择(Accept标头)+分配给正确的呈现函数(或模板)的操作是整洁,透明的。 $ curl localhost:8080/x <html><body>Hello, x!</body></html> $ curl -H "Accept: application/html" localhost:8080/x <html><body>Hello, x!</body></html> $ curl -H "Accept: application/xml" localhost:8080/x <message>Hello, x!</message> $ curl -H "Accept: application/json" localhost:8080/x {'message':'Hello, x!'} $ curl -H "Accept: text/plain" localhost:8080/x Hello, x!

祖安文状元 2020-02-21 14:17:32 0 浏览量 回答数 0

问题

鉴定资源是否存在,Restful API应该如何设计?

Atom 2020-04-25 16:27:51 0 浏览量 回答数 1

回答

https://help.aliyun.com/document_detail/32136.html?spm=5176.doc32131.6.766.ibQaKj (1)sdk api接口跟 RESTful API接口 什么关系? 答:RESTful API是裸的HTTP请求,这个也是OSS服务器唯一能够理解的协议。         而各种SDK则以各自语言方便的方式包装了HTTP RESTful API。也就是说SDK更为方便,提供了一些高级功能。最终         SDK用HTTP RESTful API和OSS服务器交互。 (2)c sdk是否支持断点续传功能? 答:支持,具体参考文档 https://help.aliyun.com/document_detail/32136.html (3)c sdk是否支持文件差异比较的功能? 大致看了下文档,提到可以把文件的校验信息放在http消息头里面,通过接口请求传文件时, oss会自动比较相同文件名的校验信息么? 答:用户自定义的校验信息OSS不会自动比较。OSS提供了 crc64 校验的方式,具体的可以参考上面的文档链接(搜索crc) (4)分片后并发式向oss传文件,分片是按照顺序向服务器传么? 答:是并发上传的,但是最终会组合为一个按分片号排序的文件。

deadbeef 2019-12-02 00:50:52 0 浏览量 回答数 0

问题

鉴定资源是否存在,Restful API应该如何设计?

montos 2020-04-20 17:11:02 8 浏览量 回答数 1

问题

开放搜索

云栖大讲堂 2019-12-01 21:42:02 826 浏览量 回答数 0

回答

服务地址 通信协议 请求语法 请求编码 Web应用托管服务API接口的调用是向Web+的服务端地址发送HTTP请求,并按照接口说明在请求中加入相应请求参数,调用后系统会返回处理结果。请求及返回结果都使用 UTF-8 字符集进行编码。 服务地址 Web应用托管服务的API接入地址为webplus.${regionId}.aliyuncs.com。 通信协议 支持通过HTTP或HTTPS协议进行请求通信。为了获得更高的安全性,推荐您使用HTTPS协议发送请求。 请求语法 Web应用托管服务提供RESTful API供您使用,其请求结构如下: HTTPMethod /resource_URI_parameters RequestHeader RequestBody 其中: HTTPMethod :请求使用的方法,包括PUT、 POST、 GET、 DELETE。 resource_URI_parameters:请求要调用的资源标示符,如/cluster。 RquestHeader:请求头信息,通常包含API的版本、Host、Authorization等信息。更多信息,请参见公共请求和返回头。 请求参数由公共请求头和API自定义参数组成。公共请求头中包含API版本号、身份验证等信息。 RequestBody:请求参数。 示例: http://webplus.cn-hangzhou.aliyuncs.com/pop/v1/wam/application?ServiceCode=webx&<公共请求参数> { "AppName","app1", "AppDescription","This is an application", "CategoryName","Java", } 请求编码 请求及返回结果都使用UTF-8字符集进行编码。

1934890530796658 2020-03-23 14:41:53 0 浏览量 回答数 0

回答

http://www.ruanyifeng.com/blog/2014/05/restful_api.html

绝之 2019-12-02 01:00:16 0 浏览量 回答数 0

问题

带有express和node.js的RestFul应用程序接口在每次修复时都会崩溃?

┭┮﹏┭┮ 2019-12-31 20:48:48 0 浏览量 回答数 0

回答

首先,我将以标准结构组织Flask应用程序,如下所示: app |-- app.py |-- static |-- css |-- img |-- js |-- templates 正如btford所提到的,如果您正在开发Angular应用程序,则需要集中精力使用Angular客户端模板,而远离服务器端模板。使用render_template('index.html')会使Flask将您的角度模板解释为Jinja模板,因此它们将无法正确渲染。相反,您需要执行以下操作: @app.route("/") def index(): return send_file('templates/index.html') 请注意,使用send_file()意味着将对文件进行缓存,因此,您至少在开发时可能要使用make_response(): return make_response(open('templates/index.html').read()) 然后,构建应用程序的AngularJS部分,修改应用程序结构,使其看起来像这样: app |-- app.py |-- static |-- css |-- img |-- js |-- app.js, controllers.js, etc. |-- lib |-- angular |-- angular.js, etc. |-- partials |-- templates |-- index.html 确保index.html包含AngularJS以及任何其他文件: <script src="static/lib/angular/angular.js"></script> 此时,您尚未构建RESTful API,因此可以让js控制器返回预定义的示例数据(仅是临时设置)。准备就绪后,实现RESTful API并使用angular-resource.js将其连接到您的angular应用程序。

祖安文状元 2020-02-22 18:27:43 0 浏览量 回答数 0

回答

我觉得要理解django的class-based-view(以下简称cbv),首先要明白django引入cbv的目的是什么。在django1.3之前,generic view也就是所谓的通用视图,使用的是function-based-view(fbv),亦即基于函数的视图。有人认为fbv比cbv更pythonic,窃以为不然。python的一大重要的特性就是面向对象。而cbv更能体现python的面向对象。cbv是通过class的方式来实现视图方法的。class相对于function,更能利用多态的特定,因此更容易从宏观层面上将项目内的比较通用的功能抽象出来。关于多态,不多解释,有兴趣的同学自己Google。总之可以理解为一个东西具有多种形态(的特性)。cbv的实现原理通过看django的源码就很容易明白,大体就是由url路由到这个cbv之后,通过cbv内部的dispatch方法进行分发,将get请求分发给cbv.get方法处理,将post请求分发给cbv.post方法处理,其他方法类似。怎么利用多态呢?cbv里引入了mixin的概念。Mixin就是写好了的一些基础类,然后通过不同的Mixin组合成为最终想要的类。 所以,理解cbv的基础是,理解Mixin。 我们以1.5为例简单讲解一下Mixin。 在python-path/Lib/site-packages/django/view/generic文件夹下,包含了django自带的几个基于类的通用视图。 base.py: ContextMixin: 提供get_context_data方法,给cbv提供context_data View: cbv的基类,提供视图分发等功能 TemplateResponseMixin: 提供渲染模板等功能 TemplateView(TemplateResponseMixin, ContextMixin, View): 从类的构造上就可以看出,这个类是由TemplateResponseMixin,ContextMixin,View三个类共同继承而来的,所以同时具有这三个类的特定,因此,这个类完整的提供了一个cbv应该具有的所有动作(除了处理数据)。 RedirectView(View): 这是View的一个子类,实现的是重定向的功能。 base中已经提供了构成cbv最最基础的几个Mixin,以及cbv的基类View。 以下django又提供了detail,list,edit,dates四个模块,这四个模块分别用来处理detail数据(比如显示日志的某一篇的明细信息),list(比如显示某user的所有日志列表),edit(比如为用户提供新增日志和修改日志的功能),dates(比如显示2014年10月的日志)。想一下,从数据维度上讲,默认的django cbv提供了按照数据维度处理的两个不同的cbv,分别是detail和list。detail显示一个数据对象,list显示数据列表。 下面先分析detail.py: SimpleObjectMixin(ContextMixin): 这是ContextMixin的一个子类,提供最基础的取回单个对象的功能。 BaseDetailView(SimpleObjectMixin, View): 提供显示单个对象的功能。 SimpleObjectTemplateResponseMixin(TemplateResponseMixin): 这是对TemplateResponseMixin的再次封装,为了实现单个对象的模板显示。 DetailView(SimpleObjectTemplateResponseMixin, BaseDetailView): 这就是完整的detail view了。 从以上类的继承上就可以大致猜出,detail模块中的相关cbv其实是对base中提供的mixin的再度继承。从而实现更精细复杂的功能。 所以剩下几个模块题主完全可以自己分析了。 所以分析完了各个模块提供的功能就完了吗?如果到这里止步,那么还是不了解cbv的好处。上文说过,cbv的一大好处就是多态。因此可以把通用的功能抽象出来做成mixin给其他cbv用。 比如,想实现restful API。最简单的,想实现返回json数据。写一个mixin就好了。 class JSONResponseMixin(object): """JSON mixin""" def render_to_response(self, context): return self.get_json_response(self.convert_context_to_json(context)) def get_json_response(self, content, **httpresponse_kwargs): return HttpResponse(content, content_type='application/json', **httpresponse_kwargs) def convert_context_to_json(self, context): return json.dumps(context) 怎么用呢? class CheckRemindUtilView(JSONResponseMixin, ListView): """ Check if there is reminder need to be reminded. This view should be called every minute. """ def get_queryset(self): start = timezone.now() end = start + datetime.timedelta(minutes=1) return Reminder.objects.filter(next_t__gte=start, next_t__lte=end, is_valid=True) def get(self, request, *args, **kwargs): self.object_list = self.get_queryset() if (self.get_paginate_by(self.object_list) is not None and hasattr(self.object_list, 'exists')): is_empty = not self.object_list.exists() else: is_empty = len(self.object_list) == 0 if is_empty: ret = {'code': 42, 'msg': 'empty'} else: for object_ in self.object_list: code = exec_remind(object_) object_.previous_t = object_.next_t update_reminder(object_) ret = {'code': code, 'msg': 'reminded.'} return self.render_to_response(ret) 再从另一个方向举个栗子。比如需要对日志进行用户过滤,用户私有的日志只能用户自己看到,其他人看不到。那么只需要写一个PrivateObjectMixin,然后其他DetailView,ListView继承这个就好了。 class PrivateObjectMixin(object): ''' Filter private object for request.user ''' def filte_private(self, queryset): ''' Filte private object for authenticated user. ''' ordering = getattr(self, 'ordering', '-date_created') if not hasattr(self, 'request'): return queryset if not hasattr(self.request, 'user'): return queryset if self.request.user.is_authenticated(): queryset = queryset.filter(Q(is_valid=True), Q(is_private=True) & Q(user__id=self.request.user.id) | Q(is_private=False)) else: queryset = queryset.filter(is_valid=True, is_private=False) try: result = queryset.order_by(ordering) except FieldError: # The model doesnot have an `ordering` field. return queryset return result class NoteListView(PrivateObjectMixin, BaseNoteListView): ''' Show note list. ''' def get_queryset(self): ''' Get notes. ''' queryset = Note.objects.all() return self.filte_private(queryset) 上面这两个例子只是简单的应用而已,完全可以借助多态实现更复杂的cbv。 以下是建议部分: 1,建议翻阅django cbv的源码,自己画个图了解cbv的实现原理,继承流程。 2,自己写几个简单的cbv。 “答案来源于网络,供您参考”

牧明 2019-12-02 02:15:02 0 浏览量 回答数 0

回答

几个月前,我写了python-auth。与RESTFul API一起使用很简单。 安装: pip install auth 跑: auth-server 用法: 在您的代码中: from auth.client import Client service = Client('srv201', '<Auth-Server IP:PORT>') print(service) service.get_roles() service.add_role(role='admin')

祖安文状元 2020-02-23 15:32:56 0 浏览量 回答数 0

问题

关键词检测(KWS)是什么?

nicenelly 2019-12-01 21:28:06 2494 浏览量 回答数 0

问题

JDBC怎么查询和分析?

轩墨 2019-12-01 21:58:22 1295 浏览量 回答数 0

问题

assertJson()用于Laravel中的JSON数组

云产品优惠 2019-12-01 22:05:18 5 浏览量 回答数 0

问题

如何模拟http请求中的函数?

kun坤 2019-12-25 21:54:13 4 浏览量 回答数 1

回答

最多1000条规则,参考: https://help.aliyun.com/document_detail/26807.html HTTP RESTful API是不支持更新单个规则的,但是控制台上你增加、删除、编辑单个规则。 内部实现就是,先把规则获取过来,然后编辑,最后用生成的新的配置整体覆盖老的配置。

deadbeef 2019-12-02 01:58:47 0 浏览量 回答数 0

问题

REST API鉴权

nicenelly 2019-12-01 21:01:17 1948 浏览量 回答数 0

问题

关键词检测(KWS)是什么?

nicenelly 2019-12-01 21:01:35 1319 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站