标签: json-api

支持HATEOAS的EmberJS DataStore适配器

我正在创建一个应用程序,我真的很喜欢RESTful,遵循HATEOAS REST要求.在前端,我正在考虑使用Ember,因为它看起来与我喜欢构建前端应用程序的方式非常一致.不幸的是,内置的REST数据源适配器似乎不了解如何导航遵循HATEOAS的API - 我必须根据ID而不是通过URL指定数据.

谷歌没有帮助我- 没有任何人知道一个数据适配器,其中支持HATEOAS?如果没有,我会尝试建立一个,但我不想浪费时间!

rest hateoas ember.js ember-data json-api

5
推荐指数
1
解决办法
580
查看次数

我的Web Apps API是否需要Oauth2

我正在尽全力构建基于express.js / node.js的REST API。我有一些问题...

  1. 如果我现在仅关注Web应用程序(不一定是电话应用程序),是否需要为我的api基于令牌/ oauth 1或2安全性?

  2. 是否有任何资源来学习如何从头开始构建它?我已经阅读了谷歌搜索“带有oauth2身份验证express.js的休息api”的头三页,但我仍然没有掌握它。

rest node.js oauth-2.0 express json-api

5
推荐指数
1
解决办法
2419
查看次数

使用JSONAPI适配器从Emberjs发布到Rails,Rails没有看到params

我想在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)

ruby-on-rails ember.js active-model-serializers json-api

5
推荐指数
1
解决办法
688
查看次数

需要改装JSONAPI转换器吗?

有没有办法将JSONAPI规范用于Retrofit?,不知道这将如何工作或如何启动,任何帮助?

我找到了这个要点:https://gist.github.com/Gregadeaux/cbcc3781fda9d7fa6498,它使用RxJava和其他一些库.

还需要转换器吗?

谢谢.

java android converter retrofit json-api

5
推荐指数
1
解决办法
1343
查看次数

API设计 - json_api最佳实践,不返回任何数据

我有一个也有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在没有变化或数据的情况下?

json api-design ruby-on-rails json-api

5
推荐指数
1
解决办法
619
查看次数

Ember Data + JSONAPI-错误:适配器由于无效而拒绝了提交

我正在尝试通过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)

ember.js ember-data json-api

5
推荐指数
1
解决办法
1842
查看次数

使用DB数据模型生成SQLAlchemy模型,模式和JSON响应

使用Flask和SQLAlchemy作为Python webapp,我的目标是创建一个系统,我可以在其中:

  1. 从现有PostgreSQL DB导入数据模型,并将这些模型映射到相应SQLAlchemy模型中的字段
  2. 使用这些SQLAlchemy模型自动生成模式.然后,此模式将用于对用户提交的数据执行数据验证.(我目前正在尝试使用Marshmallow,但我对其他建议持开放态度).
  3. 使用在步骤2中生成的模式执行JSON响应格式化.(我目前正在尝试根据JsonAPI的模式格式化我的响应 - 如果需要,这可能会改变,但我更喜欢它).

所有这些都将打包在一个单独的层中,在编写API时应该允许简单的数据访问,验证和响应格式化,希望无需手动定义数据模型或模式超过DB中已存在的定义.这引出了我的问题:

我可以利用现有的框架来完成我想要完成的所有事情吗?我不希望有一个单独的库可以做任何事情,但我希望能够利用几个现有的框架.但是,我遇到了直接的冲突,特别是在第2步和第3步.我到目前为止尝试使用的堆栈如下:

  • Flask(我的网页框架)
  • SQLAlchemy(用于通过反射访问我的数据,见下文)
  • Flask-Marshmallow(生成数据验证模式)
  • Marshmallow-JsonAPI(根据JsonAPI规范格式化JSON响应)

我有第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)

python validation sqlalchemy json-api marshmallow

5
推荐指数
1
解决办法
659
查看次数

使用邮递员发送json api对象

我正在使用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

谢谢 !

有效的HTML

json json-api jsonapi-resources jsonapiframework

5
推荐指数
1
解决办法
8363
查看次数

HATEOAS 和 API 驱动的表单

我正在尝试将 HATEOAS 应用于现有应用程序,但在对由 API 响应驱动的表单输入进行建模时遇到问题。

\n\n

该应用程序允许搜索和预订两个地方之间的连接。第一个端点允许搜索连接GET /connections?from={lat,lon}&to={lat,lon}&departure={dateTime}并返回以下有效负载(响应正文)。

\n\n
[\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]\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了对其中一个连接下订单,客户端需要POST /orders使用以下有效负载之一(请求正文)发出请求:

\n\n

hateoas spring-hateoas json-ld collection-json json-api

5
推荐指数
1
解决办法
831
查看次数

使用 rswag 遵循 JSON Api

我正在使用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 …

rspec ruby-on-rails json-api rswag

5
推荐指数
1
解决办法
3783
查看次数