API端点接受可变数据集

时间:2019-01-04 11:11:45

标签: php rest api

我的API的一个端点必须具有一个可更改的数据集,具体取决于上下文(某些选项,例如一个域)。我们如何(除了API文档之外)如何告知前端我们期望有这样的数据集?我想到编写一个端点,以返回我期望作为响应的字段(更具体地说-带有特定类型的输入,其占位符,默认值等的整个表单)。

2 个答案:

答案 0 :(得分:0)

您正在寻找的潜在的自描述API是OPTIONS HTTP请求。

  

OPTIONS方法请求有关通信的信息
  目标资源在原始位置可用的选项
  服务器或中间中介。该方法允许客户端
  确定与
相关的选项和/或要求   资源或服务器的功能,而不意味着
  资源行动。

http://zacstewart.com/2012/04/14/http-options-method.html

对于不同的可能数据集,您可以使用自定义的Content-Type标头,例如:Content-type: application/vnd+some.payload+json

使用这些类型的一个很好的例子是GitHub API:https://developer.github.com/v3/media/

答案 1 :(得分:-1)

返回带有JSON响应的Http 400错误请求,其中包含有效负载应遵循的JSON模式的URL。 还可以选择单独的端点返回JSON模式。

我不知道您的情况,但是我不喜欢“可变数据集”的想法。也许您可以考虑重新设计API或将数据集包装到某种容器中,以便可以通过单个JSON模式来描述所有这些数据集? (例如下面的示例)

<div class="form-horizontal">
<div class="form-group">
    <div class="col-md-2 control-label"><label for="HouseNumber">House No.</label></div>
    <div class="col-md-10">
        <input type="text" id="HouseNumber" name="HouseNumber" />
    </div>
</div>
<div class="form-group">
    <div class="col-md-2 control-label"><label for="PostCode">Post Code</label></div>
    <div class="col-md-10">
        <input type="text" id="PostCode" name="PostCode" />
    </div>
</div>
<div class="form-group">
    <div class="row">
        <div class="col-md-4 acc-centre">&nbsp;</div>
        <div class="col-md-4 acc-centre"><input type="button" class="btn btn-primary btn-lg" value="Lookup" onclick="getAddress()"></div>
        <div class="col-md-4 acc-centre">&nbsp;</div>
    </div>
    <div class="row">
        <div class="col-md-12 acc-centre">
            <span id="address_1"></span><br />
            <span id="address_2"></span><br />
            <span id="town"></span><br />
            <span id="county"></span><br />
            <span id="postcode"></span><br />
            <span id="region"></span><br />
            <span id="country"></span><br />
        </div>
    </div>
</div>

取决于“域”值,内容可以是字符串或数字