JSON API-从外部源获取数据时如何形成URI段

时间:2019-03-26 01:20:39

标签: json-api jsonapiframework

我正在写一个符合https://jsonapi.org/format/标准的api规范。在确定要在以下情况下实施的正确uri格式时,我遇到了麻烦。

概述:

公司库存系统包含产品和价格信息。一种产品有很多价格。库存系统通过API但使用库存系统主键将数据推送到本地系统。本地系统应将提供的数据捕获到API中,并在本地数据库中更新或创建价格记录

例如:

POST /产品/.....?或POST / products /

{
   "data":{
       "externalId":"EIR-32432",
       "externalPriceId":xxx,
       "price":"xxx.xx",
       "currency":"USD"
   }
}

2 个答案:

答案 0 :(得分:1)

您必须向表示该资源集合的URL发送一个POST请求,以使用JSON:API规范创建资源:

  

可以通过向表示资源集合的URL发送POST请求来创建资源。请求必须包括一个资源对象作为主要数据。资源对象必须至少包含一个类型成员。

该规范本身与URL命名无关,但是在所有示例中都使用了多种资源类型。如果您遵循相同的约定,则创建产品的请求应为POST /products

如以上引用中所述,请求必须包含resource object。您问题中的示例不是有效的资源对​​象,因为它错过了type并且属性不在attributes键下。用于创建产品的有效资源对象如下所示:

{
    "data":{
        "type": "products",
        "attributes": {
            "externalId": "EIR-32432",
            "externalPriceId": "xxx",
            "price": "xxx.xx",
            "currency": "USD"
        }
    }
}

还请注意,关系不应显示为属性:

  

尽管通常在内部将一个外键(例如author_id)与要在资源对象中表示的其他信息一起存储在内部,但这些键不应作为属性出现。

根据您的示例尚不清楚externalIdexternalPriceId是否属于您API范围内的关系。

请在规范本身中找到有关在JSON:API中创建资源的更多详细信息:https://jsonapi.org/format/#crud-creating它还附带一个示例。

答案 1 :(得分:-1)

您可以在此处检查URI的一些命名:https://restfulapi.net/resource-naming/