使用 pip 安装 Flask-RESTful:

pip install flask-restful

开发的版本可以从 GitHub 上的页面 下载

git clone https://github.com/twilio/flask-restful.gitcd flask-restfulpython setup.py develop

一个最小的 API

from flask import Flask
from flask_restful import Api, Resourceapp = Flask(__name__)
api = Api(app)class HellowWOrld(Resource):def get(self):return {"hello": "world"}api.add_resource(HellowWOrld, '/')if __name__ == "__main__":app.run(debug=True)

在这里插入图片描述
在这里插入图片描述

资源丰富的路由

from flask import Flask, request
from flask_restful import Api, Resourceapp = Flask(__name__)
api = Api(app)todos = {}class TodoSimple(Resource):def get(self, todo_id):return {todo_id: todos[todo_id]}def put(self, todo_id):todos[todo_id] = request.form['data']return {todo_id: todos[todo_id]}api.add_resource(TodoSimple, '/<string:todo_id>')if __name__ == "__main__":app.run()

在这里插入图片描述
在这里插入图片描述
通过requests库发送请求
在这里插入图片描述

设置响应状态码以及响应头

from flask import Flask
from flask_restful import Api, Resourceapp = Flask(__name__)
api = Api(app)class Todo1(Resource):def get(self):# 默认响应状态码为200return {"task": 'Hello World'}class Todo2(Resource):def get(self):# 修改状态码为201return {"task": "Hello World"}, 201class Todo3(Resource):def get(self):# 添加响应头信息return {"task": "Hello World"}, 201, {"Python": "Flask", "python": "Tornado"}api.add_resource(Todo1, '/todo1')
api.add_resource(Todo2, '/todo2')
api.add_resource(Todo3, '/todo3')if __name__ == "__main__":app.run()

在这里插入图片描述

请求参数解析

  • 验证请求参数,类似于flask中的WTF扩展表单验证
from flask_restful import reqparseparser = reqparse.RequestParser()
parser.add_argument('rate', type=int, help='Rate cannot be converted')
parser.add_argument('name', type=str)
args = parser.parse_args()
# coding:utf-8from flask import Flask, request
from flask_restful import Api, Resource, reqparseapp = Flask(__name__)
api = Api(app)# 创建请求参数解析对象
parser = reqparse.RequestParser()
# 添加验证字段,以及验证信息
parser.add_argument('uname', type=str, help='is must str')
parser.add_argument('password', type=str, required=True, help='is must exists')
parser.add_argument('age', type=int, help='is must int')class Register(Resource):def get(self):return "welcome come to register page"def post(self):data = parser.parse_args(strict=True)return dataapi.add_resource(Register, '/register')if __name__ == "__main__":app.run(debug=True)

在这里插入图片描述

限制该字段不能为空

  • 只需要添加 required=True
parser.add_argument('name', type=str, required=True, help="Name cannot be blank!")

接受该字段可以有多个值&列表

  • action='append'
parser.add_argument('name', type=str, action='append')
curl http://api.example.com -d "Name=bob" -d "Name=sue" -d "Name=joe"args = parser.parse_args()
args['name']    # ['bob', 'sue', 'joe']

设置请求参数来源(url、表单、请求头、cookie…)

# 表单数据
parser.add_argument('name', type=int, location='form')# url数据
parser.add_argument('PageSize', type=int, location='args')# 请求头数据
parser.add_argument('User-Agent', type=str, location='headers')# cookies数据
parser.add_argument('session_id', type=str, location='cookies')# 多媒体文件
parser.add_argument('picture', type=werkzeug.datastructures.FileStorage, location='files')

多个位置参数

  • 列表中最后一个优先出现在结果集中。(例如:location=[‘headers’, ‘values’],解析后 ‘values’ 的结果会在 ‘headers’ 前面)
parser.add_argument('text', location=['headers', 'values'])

继承解析

  • 往往你会为你编写的每个资源编写不同的解析器。这样做的问题就是如果解析器具有共同的参数。不是重写,你可以编写一个包含所有共享参数的父解析器接着使用 copy() 扩充它。你也可以使用 replace_argument() 覆盖父级的任何参数,或者使用 remove_argument() 完全删除参数。 例如:
from flask.ext.restful import RequestParserparser = RequestParser()
parser.add_argument('foo', type=int)parser_copy = parser.copy()
parser_copy.add_argument('bar', type=int)# parser_copy has both 'foo' and 'bar'parser_copy.replace_argument('foo', type=str, required=True, location='json')
# 'foo' is now a required str located in json, not an int as defined
#  by original parserparser_copy.remove_argument('foo')
# parser_copy no longer has 'foo' argument

输出字段

(1)基本用法

  • 你可以定义一个字典或者 fields 的 OrderedDict 类型,OrderedDict 类型是指键名是要呈现的对象的属性或键的名称,键值是一个类,该类格式化和返回的该字段的值。下面例子有三个字段,两个是字符串(Strings)以及一个是日期时间(DateTime),格式为 RFC 822 日期字符串(同样也支持 ISO 8601)。
from flask_restful import Resource, fields, marshal_withresource_fields = {'name': fields.String,'address': fields.String,'date_updated': fields.DateTime(dt_format='rfc822'),
}class Todo(Resource):@marshal_with(resource_fields, envelope='resource')def get(self, **kwargs):return db_get_todo()  # Some function that queries the db
  • 这个例子假设你有一个自定义的数据库对象(todo),它具有属性:nameaddress, 以及 date_updated。该对象上任何其它的属性可以被认为是私有的不会在输出中呈现出来。一个可选的 envelope 关键字参数被指定为封装结果输出。
  • 装饰器 marshal_with 是真正接受你的数据对象并且过滤字段。marshal_with 能够在单个对象,字典,或者列表对象上工作。
  • 注意:marshal_with 是一个很便捷的装饰器,在功能上等效于如下的 return marshal(db_get_todo(), resource_fields), 200。这个明确的表达式能用于返回 200 以及其它的 HTTP 状态码作为成功响应。
    (2)示例演示
# coding:utf-8from flask import Flask, request
from flask_restful import Api, Resource, reqparse, fields, marshal_with
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommandapp = Flask(__name__)
api = Api(app)class Config(object):"""配置参数"""SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/db_flask"# 设置sqlalchemy自动跟踪数据库SQLALCHEMY_TRACK_MODIFICATIONS = TrueSECRET_KRY = '#%*(_)?./DFVDjnd34534'app.config.from_object(Config)# 创建数据库sqlalchemy工具对象
db = SQLAlchemy(app)# 创建flask脚本管理工具对象
manager = Manager(app)# 创建数据库迁移工具对象
Migrate(app, db)# 向manager对象中添加数据库操作命令
manager.add_command('db', MigrateCommand)# 创建请求参数解析对象
parser = reqparse.RequestParser()
parser.add_argument('name', type=str, help='is must str')
parser.add_argument('password', type=str, required=True, help='is must exists')
parser.add_argument('id', type=int, help='is must int')# 对象输出属性
resource_fields = {'id': fields.String,'name': fields.String,'email': fields.String
}# 创建数据库模型类
class Role(db.Model):"""用户角色表"""__tablename__ = 'tbl_roles'id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(32), unique=True)# 需要手动添加,方便使用Role.user查询用户对象,user列不是真实存在的,backref="role"为了方便通过User.role获取角色对象,# 因为使用User.role_id只能获取到角色id,要想获取角色对象,还需要再在Role表中查询一次users = db.relationship("User", backref="role")def __repr__(self):"""定义之后,可以让显示对象的时候更直观,类似于Django中的__str__"""return "Rloe object: name=%s" % self.nameclass User(db.Model):"""用户表"""__tablename__ = 'tbl_users'  # 指明数据库表名id = db.Column(db.Integer, primary_key=True)  # 整型主键,会默认设置为自增主键name = db.Column(db.String(64), unique=True)email = db.Column(db.String(128), unique=True)password = db.Column(db.String(128), nullable=False)  # nullable=False 参数必须传role_id = db.Column(db.Integer, db.ForeignKey("tbl_roles.id"))class Users(Resource):@marshal_with(resource_fields, envelope='users')def post(self):args = parser.parse_args()id = args.get('id')name = args.get('name')password = args.get('password')user = User.query.filter_by(name=name, password=password).all()return userapi.add_resource(Users, '/users')if __name__ == "__main__":app.run(debug=True)
  • 运行项目
    在这里插入图片描述
  • 发起post请求
    在这里插入图片描述
  • 我们将返回结果格式化在解释
    在这里插入图片描述
  • 这是我们定义的输出内容
    在这里插入图片描述
  • 这是数据库对象属性
    在这里插入图片描述
  • 视图返回
    在这里插入图片描述
    如果不定义输出字段,则只会返回该用户对象,定义了输出字段resource_fields后,使用@marshal_with(resource_fields, envelope='users'),则会返回resource_fields内定义了的字段属性,envelope:即你想要用户看到的对象,我们上述示例中因为获取的是user对象信息,所以我定义为users,在返回结果中看到的users即我们此处定义的。

(3)重命名属性

  • 很多时候你面向公众的字段名称是不同于内部的属性名。使用 attribute 可以配置这种映射。
fields = {'name': fields.String(attribute='private_name'),'address': fields.String,
}
  • lambda 也能在 attribute 中使用
fields = {'name': fields.String(attribute=lambda x: x._private_name),'address': fields.String,
}

(4)默认值

  • 如果由于某种原因你的数据对象中并没有你定义的字段列表中的属性,你可以指定一个默认值而不是返回 None。
fields = {'name': fields.String(default='Anonymous User'),'address': fields.String,
}

(5)自定义字段&多个值

class UrgentItem(fields.Raw):def format(self, value):return "Urgent" if value & 0x01 else "Normal"class UnreadItem(fields.Raw):def format(self, value):return "Unread" if value & 0x02 else "Read"fields = {'name': fields.String,'priority': UrgentItem(attribute='flags'),'status': UnreadItem(attribute='flags'),
}

(6)Url & 其它具体字段

  • Flask-RESTful 包含一个特别的字段,fields.Url,即为所请求的资源合成一个 uri。这也是一个好示例,它展示了如何添加真正在你的数据对象中存在的数据到你的响应中
class RandomNumber(fields.Raw):def output(self, key, obj):return random.random()fields = {'name': fields.String,# todo_resource is:访问视图时的路由'uri': fields.Url('todo_resource'),'random': RandomNumber,
}
  • 示例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 默认情况下,fields.Url 返回一个相对的 uri。为了生成包含协议(scheme),主机名以及端口的绝对 uri,需要在字段声明的时候传入 absolute=True。传入 scheme 关键字参数可以覆盖默认的协议(scheme):
fields = {'uri': fields.Url('todo_resource', absolute=True)'https_uri': fields.Url('todo_resource', absolute=True, scheme='https')
}
  • 示例
    在这里插入图片描述
    在这里插入图片描述

(7)复杂结构

  • 你可以有一个扁平的结构,marshal_with 将会把它转变为一个嵌套结构
>>> from flask_restful import fields, marshal
>>> import json
>>>
>>> resource_fields = {'name': fields.String}
>>> resource_fields['address'] = {}
>>> resource_fields['address']['line 1'] = fields.String(attribute='addr1')
>>> resource_fields['address']['line 2'] = fields.String(attribute='addr2')
>>> resource_fields['address']['city'] = fields.String
>>> resource_fields['address']['state'] = fields.String
>>> resource_fields['address']['zip'] = fields.String
>>> data = {'name': 'bob', 'addr1': '123 fake street', 'addr2': '', 'city': 'New York', 'state': 'NY', 'zip': '10468'}
>>> json.dumps(marshal(data, resource_fields))
'{"name": "bob", "address": {"line 1": "123 fake street", "line 2": "", "state": "NY", "zip": "10468", "city": "New York"}}'
  • 注意:address 字段并不真正地存在于数据对象中,但是任何一个子字段(sub-fields)可以直接地访问对象的属性,就像没有嵌套一样。

(8)列表字段

  • 你也可以把字段解组(unmarshal)成列表
>>> from flask_restful import fields, marshal
>>> import json
>>>
>>> resource_fields = {'name': fields.String, 'first_names': fields.List(fields.String)}
>>> data = {'name': 'Bougnazal', 'first_names' : ['Emile', 'Raoul']}
>>> json.dumps(marshal(data, resource_fields))
>>> '{"first_names": ["Emile", "Raoul"], "name": "Bougnazal"}'

(10)高级:嵌套字段

  • 尽管使用字典套入字段能够使得一个扁平的数据对象变成一个嵌套的响应,你可以使用 Nested 解组(unmarshal)嵌套数据结构并且合适地呈现它们。
>>> from flask_restful import fields, marshal
>>> import json
>>>
>>> address_fields = {}
>>> address_fields['line 1'] = fields.String(attribute='addr1')
>>> address_fields['line 2'] = fields.String(attribute='addr2')
>>> address_fields['city'] = fields.String(attribute='city')
>>> address_fields['state'] = fields.String(attribute='state')
>>> address_fields['zip'] = fields.String(attribute='zip')
>>>
>>> resource_fields = {}
>>> resource_fields['name'] = fields.String
>>> resource_fields['billing_address'] = fields.Nested(address_fields)
>>> resource_fields['shipping_address'] = fields.Nested(address_fields)
>>> address1 = {'addr1': '123 fake street', 'city': 'New York', 'state': 'NY', 'zip': '10468'}
>>> address2 = {'addr1': '555 nowhere', 'city': 'New York', 'state': 'NY', 'zip': '10468'}
>>> data = { 'name': 'bob', 'billing_address': address1, 'shipping_address': address2}
>>>
>>> json.dumps(marshal_with(data, resource_fields))
'{"billing_address": {"line 1": "123 fake street", "line 2": null, "state": "NY", "zip": "10468", "city": "New York"}, "name": "bob", "shipping_address": {"line 1": "555 nowhere", "line 2": null, "state": "NY", "zip": "10468", "city": "New York"}}'

扩展 Flask-RESTful

默认的API仅支持JSON格式内容,我们可以通过扩展,使其可以支持更多类型数据@api.representation

  • 下面表示函数必须返回一个 Flask Response 对象。
app = Flask(__name__)
api = restful.Api(app)@api.representation('application/json')
def output_json(data, code, headers=None):resp = make_response(json.dumps(data), code)resp.headers.extend(headers or {})return resp@api.representation('application/xml')
def xml(data, code, headers):resp = make_response(convert_data_to_xml(data), code)resp.headers.extend(headers)return resp

(1)自定义字段 & 输入

  • 自定义输出字段让你无需直接修改内部对象执行自己的输出格式。所有你必须做的就是继承 Raw 并且实现 format() 方法:
  • 下面示例:将用户定义的字段name改为大写NAME输出
class AllCapsString(fields.Raw):def format(self, value):return value.upper()# example usage
fields = {'name': fields.String,'all_caps_name': AllCapsString(attribute=name),
}

(2)输入

  • 对于解析参数,你可能要执行自定义验证。创建你自己的输入类型让你轻松地扩展请求解析。
  • 请求参数解析RequestParser 中使用
parser = reqparse.RequestParser()
parser.add_argument('OddNumber', type=odd_number)
parser.add_argument('Status', type=task_status)
args = parser.parse_args()
  • 对于解析参数,你可能要执行自定义验证。创建你自己的输入类型让你轻松地扩展请求解析。
def odd_number(value):if value % 2 == 0:raise ValueError("Value is not odd")return value
  • 请求解析器在你想要在错误消息中引用名称的情况下将也会允许你访问参数的名称(OddNumber)
def odd_number(value, name):if value % 2 == 0:raise ValueError("The parameter '{}' is not odd. You gave us the value: {}".format(name, value))return value
  • 你还可以将公开的参数转换为内部表示(根据用户请求value返回列表中对应数据)
# 'init' => 0
# 'in-progress' => 1
# 'completed' => 2def task_status(value):statuses = [u"init", u"in-progress", u"completed"]return statuses.index(value)

(3)响应格式

  • 为了支持其它的表示(像 XML,CSV,HTML),你可以使用 representation() 装饰器。你需要在你的 API 中引用它。
api = restful.Api(app)@api.representation('text/csv')
def output_csv(data, code, headers=None):pass# implement csv output!
  • 这些输出函数有三个参数,data,code,以及 headers。
  • data 是你从你的资源方法返回的对象
  • code 是预计的 HTTP 状态码
  • headers 是设置在响应中任意的 HTTP 头。你的输出函数应该返回一个 Flask 响应对象。
def output_json(data, code, headers=None):"""Makes a Flask response with a JSON encoded body"""resp = make_response(json.dumps(data), code)resp.headers.extend(headers or {})return resp

另外一种实现这一点的就是继承 Api 类并且提供你自己输出函数。

class Api(restful.Api):def __init__(self, *args, **kwargs):super(Api, self).__init__(*args, **kwargs)self.representations = {'application/xml': output_xml,'text/html': output_html,'text/csv': output_csv,'application/json': output_json,}

(4)自定义错误处理器

app = Flask(__name__)
api = flask_restful.Api(app, catch_all_404s=True)
  • Flask-RESTful 会处理除了自己路由上的错误还有应用程序上所有的 404 错误。
  • 有时候你想在发生错误的时候做一些特别的东西 - 记录到文件,发送邮件,等等。使用 got_request_exception() 方法把自定义错误处理加入到异常。
def log_exception(sender, exception, **extra):""" Log an exception to our logging framework """sender.logger.debug('Got exception during processing: %s', exception)from flask import got_request_exception
got_request_exception.connect(log_exception, app)

(5)定义自定义错误消息

  • 在一个请求期间遇到某些错误的时候,你可能想返回一个特定的消息以及/或者状态码。你可以告诉 Flask-RESTful 你要如何处理每一个错误/异常,因此你不必在你的 API 代码中编写 try/except 代码块。
errors = {'UserAlreadyExistsError': {'message': "A user with that username already exists.",'status': 409,},'ResourceDoesNotExist': {'message': "A resource with that ID no longer exists.",'status': 410,'extra': "Any extra information you want.",},
}
  • 包含 ‘status’ 键可以设置响应的状态码。如果没有指定的话,默认是 500,一旦你的 errors 字典定义,简单地把它传给 Api 构造函数
app = Flask(__name__)
api = flask_restful.Api(app, errors=errors)
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Sublime Text3汉化版java配置+插件安装

    昨天看了毕向东的视频,看他用的editplus,萌生念头,搞个Sublime Text玩玩,说实话,这玩意自己以前也下载用过,可能不太习惯,后来没用,不过说实话,界面配色方案我很喜欢,myeclipse没有一套很好的灰黑色配色方案,感觉黑色的酷酷的,接下来进入正题我自己上传了一份Sublim…...

    2024/4/30 17:30:01
  2. BZOJ 4589(Hard Nim-FWT测试)

    题目:给n个不超过m的素数,求xor和=0的方案数,FWT变换裸题。 题目2关于F逆元的公式: inv(2)=(F+1)>>1 证:[(F+1)>>1]∗2(modF)=F+1(modF)=1 代码:#include<bits/stdc++.h> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define…...

    2024/4/30 21:30:20
  3. Servlet 实现一个RESTful的用户注册API

    什么是RESTful? RESTful(Representational State Transfer)是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 具体实现逻辑 利用RE…...

    2024/4/30 19:09:33
  4. tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例

    tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例#!/usr/bin/env python # -*- coding: utf-8 -*-import tensorflow as tfimport numpy as npparams=np.random.normal(loc=0.0,scale=1.0,size=[10,10])ids=[1,2,3]with tf.Session() as sess:print(sess.ru…...

    2024/4/30 19:17:29
  5. Java必备的Intellij插件推荐(长期更新)

    工欲善其事,必先利其器lombok 可以省略需要手写的Getter & Setter方法Builder Generator(lombok可以代替) 快速生成构造器模式代码GsonFormat 快速将JSON字符串转为类Alibaba Java Coding Guidelines 统一组内开发规范FindBugs-IDEA 帮助你发现隐藏BUGSonarLint 帮助你发…...

    2024/4/17 23:48:23
  6. 对比4个函数 isset in_array array_search array_key_exists 速率对比及初步分析原因

    借用一位大侠的测试的时间的类,我写了一个测试程序,对这四个函数在查找上的效率问题做了测试 in_array: in_array() 函数在数组中搜索给定的值,在第三个参数中拥有true or false,.默认为FALSE,可以设置检查类型是否相同。 时间:2925.6msarray_search: array_search() 函数…...

    2024/4/17 1:58:57
  7. 转载--《怎样制作一款优秀的塔防游戏》

    怎样制作一款优秀的塔防游戏?近日,独立游戏工作室,经典塔防游戏《守护者冒险》(Defender’s Quest)开发商Level Up Labs联合创始人拉斯杜切特(Lars Doucet)撰写专栏文章,分享了其工作室制作《守护者冒险》的11项原则。杜切特表示,塔防游戏要想最大限度发挥自身潜力,需要做…...

    2024/4/17 1:59:09
  8. 使用slim3快速开发RESTful API

    关于slim在php的框架世界中,除了像symfony、laravel以及zend这样的全栈式的框架之外,还存在着一些微框架,比如基于symfony的silex,基于laravel的lumen,以及这篇博客中要讲到的slim框架,他们不像别的框架那样笨重,而且存在很多的配置项,大多数都是开箱即用,学习周期也很…...

    2024/4/22 1:32:15
  9. 学习:多项式算法----FWT

    FWT也称快速沃尔什变换,是用来求多项式之间位运算的系数的。FWT的思想与FFT有异曲同工之妙,但较FFT来说,FWT比较简单。前言之前学习FFT(快速傅里叶变换)的时候,我们知道FFT是用来快速求两个多项式乘积的,即求序列C: $$C_k=\sum_{i+j=k}A_iB_j$$而FWT解决的多项式的位运…...

    2024/4/17 1:59:03
  10. Graph Embedding方案之DeepWalk

    ​对于算法不太了解的同学,这是一个看上去很没吸引力的标题,预计点击量超不过200。最近非常迷恋一句话“万物皆可Embedding”,讲的是世间所有的事物都能通过某种方法被向量表示,一旦事物被向量表示了就可以通过乘法去做进一步逻辑处理。比如商品A被表示为向量m,商品B被表示…...

    2024/4/19 12:59:37
  11. Java开发中一些必备经典Eclipse插件以及使用集萃

    在我们开发的过程中,为了提高生产效率或者开心开发,我们大家肯定每个人或多或少肯定会有一些自己的习惯和技巧;而且每个人的习惯和技巧都可能不太一样,所以,笔者准备抛砖引玉,大家一起来讨论交流一下。我会根据和大家的交流反馈来修改并更新这篇文章。#1 反编译代码的插件…...

    2024/4/17 1:59:45
  12. 详解TF中的Embedding操作!

    embedding大家都不陌生,在我们的模型中,只要存在离散变量,那么一般都会用到embedding操作。今天这篇,我们将按以下的章节来介绍TF中的embedding操作。 什么是embedding? tf1.x中的embedding实现,对比embedding_lookup和matmul tf1.x中与embedding类似操作,包括gather,g…...

    2024/4/19 6:55:10
  13. ThinkPHP5.0 Restful API 开发流程及小技巧

    最近学习了七月老师的ThinkPHP+小程序的实战课程,对用于ThinkPHP开发Rest api接口有了更深的体会,课程中七月老师的清晰的模块化编程思想也给我有了很大的感触。希望通过此篇文章整理课程开发思路的同时,也能给对这方面有学习兴趣的同学提供些许帮助。一、要学习什么是 REST…...

    2024/4/17 23:58:19
  14. FWT模板题 牛客网暑期ACM多校训练营(第九场)A. Circulant Matrix

    **作者:tokitsukaze 链接:https://www.nowcoder.com/discuss/94787?type=101&order=0&pos=1&page=0 来源:牛客网题解: 观察样例感觉是个卷积,然后发现是个xor的FWT。 题意转换成,给个a数组和c数组,求一个b数组,使得a数组和b数组做FWT后的结果为c数组。…...

    2024/4/17 1:59:51
  15. RESTful简介以及SpringMVC如何实现RESTful风格的编程

    1 什么是RESTful?Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。2 资源和资源操作资源:互联网所有的事物都可以被抽象为资源 资源操作:使用POST、DELETE、PUT、GET,使…...

    2024/4/17 2:00:09
  16. select函数及fd_set介绍

    1. select函数 1. 用途在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这是就需要用到非阻塞的编程方式,使用select函数就可以实现非阻塞编…...

    2024/4/17 1:59:09
  17. Keras的Embedding函数

    我在学习项目https://github.com/zonetrooper32/VDCNN 的时候,觉得vdcnn.py里Embedding的用法有误,原代码中的写法为:embedded_chars = Embedding(input_dim=sequence_length, output_dim=embedding_dim)(inputs) #embdding层的输入是inputsEmbedding函数的官方文档:https:…...

    2024/4/17 13:21:33
  18. 使用SpringBoot编写Restful风格接口

    一、简介Restful是一种对url进行规范的编码风格,通常一个网址对应一个资源,访问形式类似http://xxx.com/xx/{id}/{id}。举个栗子,当我们在某购物网站上买手机时会有很多品牌选择,而每种品牌下又有很多型号,那么https://mall.com/mobile/iphone/6 代表了Iphone6,https://m…...

    2024/4/18 22:04:46
  19. 词向量 词嵌入 word embedding

    词嵌入 word embedding embedding 嵌入 embedding: 嵌入, 在数学上表示一个映射f:x->y, 是将x所在的空间映射到y所在空间上去,并且在x空间中每一个x有y空间中唯一的y与其对应。 嵌入,也就是把x在y空间中找到一个位置嵌入,一个x嵌入为一个唯一的y。 word embedding 词嵌入…...

    2024/4/17 2:01:03
  20. 谨慎使用IsMissing函数

    在VB6中提供了一个很好用的函数叫IsMissing,可以用来判断用户是否对缺省参数赋值,比如有以下一个函数体:Public Property Get Item(Optional ByRef Index As Integer, Optional ByRef Name As String) As TDMAttachmentDim i As LongDim lngIndex As LongDim strName As Str…...

    2024/4/17 2:46:24

最新文章

  1. 从车规传感器发展的正反面,看智驾发展的“胜负手”

    北京车展进程过半&#xff0c;雷军和周鸿祎成为车展新晋“网红”的同时&#xff0c;智能驾驶成为观众讨论最务实的话题之一。端到端自动驾驶、城市NOA这些炙手可热的话题&#xff0c;占据了大部分的关注度。 但在高阶智能驾驶之外&#xff0c;智能驾驶同样具有频繁使用需求的低…...

    2024/4/30 22:47:49
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 2024认证杯数学建模B题思路模型代码

    目录 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比赛赛后体会 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比…...

    2024/4/30 3:19:26
  4. Django实现的登录注册功能

    1 前言 在Web开发中&#xff0c;用户登录和注册是最基本且必不可少的功能。Django&#xff0c;作为一个高级的Python Web框架&#xff0c;为我们提供了强大的工具和库来快速实现这些功能。下面&#xff0c;我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …...

    2024/4/30 3:22:29
  5. 【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)

    目录 前言 什么是面向对象&#xff1f; 类的定义 类的访问限定符及封装 访问限定符 封装 类的作用域 类的实例化 类对象的存储方式 this指针 结语 前言 最早的C版本&#xff08;C with classes&#xff09;中&#xff0c;最先加上的就是类的机制&#xff0c;它构成…...

    2024/4/30 2:14:48
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57