我正在创建一个应用程序,我真的很喜欢RESTful,遵循HATEOAS REST要求.在前端,我正在考虑使用Ember,因为它看起来与我喜欢构建前端应用程序的方式非常一致.不幸的是,内置的REST数据源适配器似乎不了解如何导航遵循HATEOAS的API - 我必须根据ID而不是通过URL指定数据.
谷歌没有帮助我- 没有任何人知道一个数据适配器,其中不支持HATEOAS?如果没有,我会尝试建立一个,但我不想浪费时间!
我正在尽全力构建基于express.js / node.js的REST API。我有一些问题...
如果我现在仅关注Web应用程序(不一定是电话应用程序),是否需要为我的api基于令牌/ oauth 1或2安全性?
是否有任何资源来学习如何从头开始构建它?我已经阅读了谷歌搜索“带有oauth2身份验证express.js的休息api”的头三页,但我仍然没有掌握它。
我想在Emberjs中保存一个消息模型.我正在使用JSONAPIAdapter和JSONAPISerilzier.
我对rails的帖子命中了正确的控制器和动作作为帖子,但是如果我用Pry查看内部,那么数据属性就不存在了.我的负载:
{"data":{"attributes":{"body":"Why","user_id":"17"},"relationships":{"user":{"data":null},"conversation":{"data":null}},"type":"messages"}}
Content-Type:application/vnd.api+json
Run Code Online (Sandbox Code Playgroud)
Rails控制台中的Rails参数:
{"format"=>"json", "controller"=>"api/v1/messages", "action"=>"create"}
Run Code Online (Sandbox Code Playgroud) 有没有办法将JSONAPI规范用于Retrofit?,不知道这将如何工作或如何启动,任何帮助?
我找到了这个要点:https://gist.github.com/Gregadeaux/cbcc3781fda9d7fa6498,它使用RxJava和其他一些库.
还需要转换器吗?
谢谢.
我有一个也有API的Rails应用程序.我一直在尝试关注整个结构的http://jsonapi.org,但是在没有任何数据的情况下,我找不到任何关于结果的指导.例如,我有一个如下所示的端点:
https://[root]/api/apps/34/localized_strings?from_date=1330776000
Run Code Online (Sandbox Code Playgroud)
from_dateunix时间戳在哪里,如果服务器根据此日期值更新或更新数据我返回所有数据,那么没有更新我想要返回没有数据.我想知道这样做的最佳方法是什么.目前的结果如下:
{
"data": []
}
Run Code Online (Sandbox Code Playgroud)
基于http://jsonapi.org更好或更传统的是返回状态"状态":204在没有变化或数据的情况下?
我正在尝试通过POST对Ember Data 2.10的基于JSONAPI的API 的请求提交无效数据。
API用422代码和响应中的此有效负载正确响应(请注意,这些是错误对象,不是“正常” JSONAPI有效负载响应):
{
"errors": [{
"title": "Title can't be blank",
"id": "title",
"code": "100",
"source": {
"pointer": "/data/attributes/title"
},
"status": "422"
}, {
"title": "Layout can't be blank",
"id": "layout",
"code": "100",
"source": {
"pointer": "/data/relationships/layout"
},
"status": "422"
}, {
"title": "Page type can't be blank",
"id": "page-type",
"code": "100",
"source": {
"pointer": "/data/attributes/page-type"
},
"status": "422"
}]
}
Run Code Online (Sandbox Code Playgroud)
该错误似乎大部分都可以加载到模型中,但是我在控制台中收到此错误:
ember.debug.js:19160 Error: The adapter rejected the commit because it …Run Code Online (Sandbox Code Playgroud) 使用Flask和SQLAlchemy作为Python webapp,我的目标是创建一个系统,我可以在其中:
所有这些都将打包在一个单独的层中,在编写API时应该允许简单的数据访问,验证和响应格式化,希望无需手动定义数据模型或模式超过DB中已存在的定义.这引出了我的问题:
我可以利用现有的框架来完成我想要完成的所有事情吗?我不希望有一个单独的库可以做任何事情,但我希望能够利用几个现有的框架.但是,我遇到了直接的冲突,特别是在第2步和第3步.我到目前为止尝试使用的堆栈如下:
我有第1步的解决方案:SQLAlchemy的反思.这允许我读取现有数据库中的表并将它们映射到SQLAlchemy模型.这很好用.
步骤2和3的组合是它变得模糊的地方 - 我正在尝试使用Flask-Marshmallow和Marshmallow-JsonAPI.Flask-Marshmallow有ModelSchema类,它允许您通过传递现有的SQLAlchemy模型来生成模式.我可以将它传递给我在步骤1中生成的SQLAlchemy模型,满足我对第2步的标准.至于Marshmallow-JsonAPI,它具有为您的模型定义模式的功能,它将自动创建符合JSONAPI的响应,满足我对第3步的标准.我可以单独获得每个框架来做我需要的.
不幸的是,由于我的模式必须继承Flask-Marshmallow和Marshmallow-JSONAPI中的Schema类,因此我遇到了问题.我的"Dummy"类模型如下所示:
import flask
from marshmallow_jsonapi import Schema, fields
from sqlalchemy.ext.declarative import DeferredReflection
from flask_marshmallow import Marshmallow
from flask_sqlalchemy import SQLAlchemy
app = flask.Flask(__name__)
DB = SQLAlchemy()
DB.init_app(app)
MA = Marshmallow(app)
DeferredReflection.prepare(DB.get_engine(app))
class Dummy(DeferredReflection, DB.Model):
__tablename__ = "dummy" # This model will be reflected from the Dummy table
class DummySchema(MA.ModelSchema, Schema): # The problem line
class Meta:
model = Dummy …Run Code Online (Sandbox Code Playgroud) 我正在使用JSONAPI规范http://jsonapi.org/format/#status
我有以下数据,
{
"data":
{
"type": "tag",
"id": "1",
"attributes": {
"name": "Test"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用postman chrome扩展程序向终点发送帖子请求?
我正打算打电话,但我无法得到参数.
OBS.我已将Content-Type设置为application/vnd.api+json
谢谢 !

我正在尝试将 HATEOAS 应用于现有应用程序,但在对由 API 响应驱动的表单输入进行建模时遇到问题。
\n\n该应用程序允许搜索和预订两个地方之间的连接。第一个端点允许搜索连接GET /connections?from={lat,lon}&to={lat,lon}&departure={dateTime}并返回以下有效负载(响应正文)。
[\n {\n "id": "aaa",\n "carrier": "Fast Bus",\n "price": 3.20,\n "departure": "2019-04-05T12:30"\n },\n {\n "id": "bbb",\n "carrier": "Airport Bus",\n "price": 4.60,\n "departure": "2019-04-05T13:30"\n },\n {\n "id": "ccc",\n "carrier": "Slow bus",\n "price": 1.60,\n "departure": "2019-04-05T11:30"\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n\n为了对其中一个连接下订单,客户端需要POST /orders使用以下有效负载之一(请求正文)发出请求:
{\n "connectionId": "aaa",\n "email": "passenger@example.org"\n}\nRun Code Online (Sandbox Code Playgroud){\n "connectionId": "bbb",\n "email": "passenger@example.org",\n "flightNumber": "EA1234"\n}\nRun Code Online (Sandbox Code Playgroud){\n "connectionId": "ccc",\n "phoneNumber": "+44 111 222 333"\n}\nRun Code Online (Sandbox Code Playgroud)我正在使用rswag来测试一个相当常见的 RubyOnRails JSON Api应用程序,但我无法找出将文件上传到端点的相当常见的情况。
端点需要data请求正文中的常用属性以及file包含二进制文件的属性,并且我无法使 rswag 生成具有正确参数的请求。
path '/documents' do
post 'Creates a document' do
tags 'Documents'
consumes 'multipart/form-data'
produces 'application/vnd.api+json'
parameter name: 'data',
description: 'Whatever',
attributes: {
schema: {
type: :object,
properties: {
file: { type: :binary },
},
},
}
response '201', 'success' do
let(:data) do
{
attributes: {
file: Rack::Test::UploadedFile.new($REALARGS),
},
}
end
schema "$ref": '#/definitions/post_document_responses/201'
run_test! do |_example|
# ACTUAL TEST
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
还有一些其他更简单的参数(例如授权)已正确生成,然后我确信rswag已正确挂钩。我看到的请求没有参数,我可以删除data …
json-api ×10
ember.js ×3
ember-data ×2
hateoas ×2
json ×2
rest ×2
android ×1
api-design ×1
converter ×1
express ×1
java ×1
json-ld ×1
marshmallow ×1
node.js ×1
oauth-2.0 ×1
python ×1
retrofit ×1
rspec ×1
rswag ×1
sqlalchemy ×1
validation ×1