我发现了很多关于人们试图将 JSON 发布到 Flask 应用程序的问题,但这些都不是我在这里遇到的问题。
我有一个简单的 REST API,使用 Flask 和 Flask-JWT 构建,它在浏览器中运行良好,但我的单元测试遇到了障碍。该应用程序是 App Engine 应用程序,可以在本地开发服务器和 App Engine 上正常运行。我正在运行我的单元测试python -m unittest <module>
。
我有一个使用简单工厂创建的基本 Flask 应用程序:
def create_app(name=__name__, cfg):
app = Flask(name)
app.config.update(cfg)
CORS(app)
JWT(app, auth_handler, identity_handler)
@app.route('/api/v1/ping', methods=['GET'])
def handle_ping():
return jsonify({'message': 'pong'})
# other routes ...
Run Code Online (Sandbox Code Playgroud)
在上面,JWT
期望一个authentication_handler
,我已经实现了:
def auth_handler(identity, secret):
# validate identity and secret
return User(...)
Run Code Online (Sandbox Code Playgroud)
我的客户端是 Angular.js,所以我将 JSON 发布到这个端点。这在浏览器或 curl 中都可以正常工作:
$ curl -H "content-type:application/json" -d '{"username":"jackripper@example.com","password":"crm114"}' http://localhost:8080/api/v1/auth
Run Code Online (Sandbox Code Playgroud)
200 OK
在响应中给我一个和一个访问令牌。
我的简单测试用例是这样的: …
Objectify的save().entity(E entity).now()
方法返回Key<E>
已保存的entity
,这在第一次保存新实体时很有用.到现在为止还挺好.
但是,保存已存在于数据存储区中的实体时,此方法返回的内容并不完全清楚,或者返回值是否可以告诉我该写入是否成功.根据这些javadoc,我能否认为它是成功的,除非RuntimeException
被抛出?如果是这样,无论写入是否在事务内,都是真的吗?
具体来说,我正在阅读,然后使用Objectify在XG事务中修改和保存两个实体.我正在检查第一次保存的返回值,然后保存第二次,如下所示:
if(ofy().save().entity(entA).now() != null) {
ofy().save().entity(entB).now();
}
Run Code Online (Sandbox Code Playgroud)
首先,我想第一件事是我应该用一个ofy().save().entities(ent1, ent2).now()
电话保存这些?
其次,检查ofy().save().entity().now()
调用的返回值对我来说是否有意义:
ConcurrentModificationException
但是如果事务提交一直失败会发生什么,则会重试?)感谢任何人都可以给予的澄清.