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