SegmentFault rest-api的问题
2024-03-05T08:51:22+08:00
https://segmentfault.com/feeds/tag/rest-api
https://creativecommons.org/licenses/by-nc-nd/4.0/
有没有什么前端库,可以生成一个接口用各种语言发起请求的代码?
https://segmentfault.com/q/1010000044681620
2024-03-05T08:51:22+08:00
2024-03-05T08:51:22+08:00
鸿则
https://segmentfault.com/u/hongze
0
<p>有没有什么前端库,可以生成一个接口用各种语言发起请求的代码,我想实现类似下面这种功能,但是不想重复编写这些模版代码:</p><p><img width="723" height="316" src="/img/bVdbDTr" alt="image.png" title="image.png"></p>
Java后端对http中的post、put、get、delete接收参数?
https://segmentfault.com/q/1010000044091567
2023-08-08T13:09:24+08:00
2023-08-08T13:09:24+08:00
于家汉
https://segmentfault.com/u/yujiahansf
0
<p>最近接触到了<code>RESTful API</code>,其定义了<code>post</code>、<code>put</code>、<code>get</code>、<code>delete</code>四大方法分别对应于后端的增删改查,由于之前一直是使用<code>postmapping</code>与<code>getmapping</code>去通过逻辑完成增删改查,故一直认为<code>postmapping</code>的请求参数通过 body 体获取,<code>getmapping</code>通过url后面的<code>?xxx=yyy</code>或者<code>url/yy</code>获取,而对put、delete知之甚少</p><p><strong>想请问一下这四个方法如何获取参数(比如getmapping能不能通过body体获取参数?)</strong></p>
Feign只能硬编码指定encoder,decoder等配置吗?
https://segmentfault.com/q/1010000043300816
2023-01-10T21:31:19+08:00
2023-01-10T21:31:19+08:00
RUSSIAVK
https://segmentfault.com/u/russiavk
-1
<p>目前在用feign-core(非spring).<br>我的疑虑是feign只能通过如下代码硬编码指定encoder,decoder等配置吗(在github主页没找到相关的说明)?</p><p>不能通过其他方式(如spi)实现解耦吗?</p><pre><code>Feign.builder
.encoder(new MapEncoder())
.decoder(new StatusCodeDecoder());</code></pre>
图片检测接口如何设计 REST API
https://segmentfault.com/q/1010000041532255
2022-03-11T14:39:15+08:00
2022-03-11T14:39:15+08:00
樵墨
https://segmentfault.com/u/iomocc
0
<p>基本功能就是上传图片,然后返回图片类别。</p><p>这样的接口应该如何设计成REST API呢,如何进行资源抽象?</p>
运维扫描 put、delete不安全,让改怎么办
https://segmentfault.com/q/1010000040658304
2021-09-09T16:40:20+08:00
2021-09-09T16:40:20+08:00
黒沢
https://segmentfault.com/u/kurosawa
0
<p>我查了一下,put、delete和post并无本质不同,怎么反驳这个bug,有人能把论点论据都摆出来么</p><p><strong> 补充还有个<code>options</code>, 主要查出来的就是<code>options</code>,put、delete 是顺带让禁用的</strong></p><h4>这是原工单:</h4><blockquote>不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY 等。其中最常见的为TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可以利用该方法进行跨站跟踪攻击,从而进行网站钓鱼、盗取管理员cookie等。<br>建议:关闭除GET、POST外的HTTP请求方式。</blockquote><p>直接百度上复制的</p>
如何设计需要处理上传文件需求的restful 查询接口呢
https://segmentfault.com/q/1010000040651865
2021-09-08T16:56:26+08:00
2021-09-08T16:56:26+08:00
ponponon
https://segmentfault.com/u/ponponon
0
<p>我需要一个实现两个功能,需要使用 <code>restful</code> 风格</p><ul><li><p>功能一:查询 GET <code>api/documents/</code></p><blockquote>即搜索功能:用户需要上传一个文本文件,通过这个文件去搜索有没有相似的文件,类似论文查重的功能</blockquote></li><li><p>功能二:新增 POST <code>api/documents/</code></p><blockquote>用户上传一个文本文件,并作为母本保存</blockquote></li></ul><p>我现在的问题是,查询应该使用 <code>get</code> 操作,但是 <code>get</code> 请求如何上传文件呢?</p><p>如果改为 post 的话,会和<code>新增</code>功能冲突,我该如何解决这个矛盾呢?如何平衡这两者,如何设计 <code>API</code> 呢</p><blockquote>简单来说我就是觉得使用 <code>POST</code> 来查询不够 <code>restful</code></blockquote>
python flask实现的rest api如何在windows部署最简单?
https://segmentfault.com/q/1010000040262296
2021-06-29T23:26:15+08:00
2021-06-29T23:26:15+08:00
被水淹死的鱼
https://segmentfault.com/u/beishuiyansideyu_5ddd630174068
0
<p>我使用flask做了几个rest api,但是在部署的时候遇到了应该如何部署的问题。服务器环境主要是windows,我在网上查了一圈,发现部署都还算比较麻烦,并且需要安装python的运行环境,现在我是直接使用了pyinstaller把整个代码打包成exe部署,我想知道: <br><strong>1. 接口访问量不大,但是我想要服务稳定,直接打包成exe运行接口,稳定性如何? </strong><br><strong>2. 因为工作的性质,我不想在服务器安装python的运行环境,我是否还有其它的方式部署这个接口程序(比直接运行exe的方式稳定的方式)?</strong></p><p>非常感谢</p>
DRF如何实现路由资源的嵌套呢?
https://segmentfault.com/q/1010000039206383
2021-02-11T22:47:02+08:00
2021-02-11T22:47:02+08:00
Atarsei
https://segmentfault.com/u/atarsei
0
<p>例如:<br>www.example.com/api/user/1/posts/1</p><p>除了手动编写繁复的url,还有其他办法吗?</p>
JS中IF的逻辑问题
https://segmentfault.com/q/1010000023556794
2020-08-09T21:21:50+08:00
2020-08-09T21:21:50+08:00
blurfun
https://segmentfault.com/u/blurfun
0
<p>我通过JS调用WordPress的API。</p><p>number的值有时候时00,我想把这些值为00的,都变为0,这样就可以求和了。</p><p>大概代码如下:</p><pre><code>var sum = 0;
for (i = 0; i < postsData.length; i++) {
var x =postsData[i].number;
if (x === "00") {
x= 0;
sum += x;
} else {sum += x;}
}</code></pre><p>但结果是错误的,当number是00时,则不显示求和结果,也没有错误提示.</p><p>补充:<br>求和的代码大概是这样的:</p><pre><code>if (sum > 0 ) { document.getElementById("test").innerHTML = sum; }</code></pre><p>原始代码比较复杂,是一个Nested loop.<br>number是字符串。<br>当number的值都不是两个零时,计算结果正确。<br>但当number的其中一个值为两个零时,不显示计算结果,也没有错误提示。我感觉是if这块写错了。当一个函数等于某个值时,可以再给这个函数赋予另一个值吗?</p>
请教.net大佬,关于HttpClient调用rest api的问题
https://segmentfault.com/q/1010000022382868
2020-04-15T16:51:01+08:00
2020-04-15T16:51:01+08:00
抓住雨夜偷牛的人
https://segmentfault.com/u/chenxianghuan
0
<p>最近在使用.net core 2.1 httpclient时遇到一个问题,看了一天,实在搞不定,特来请教各路大神:</p>
<p>我是调用Azure的Application Insights REST API来获取我们系统的接口调用情况。</p>
<p>我的调用代码如下:</p>
<pre><code class="C#">public class AzureApiClient
{
private readonly HttpClient _httpClient;
public AzureApiClient(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<string> GetQuery(string querystring)
{
Trace.TraceInformation("基础路径:" + _httpClient.BaseAddress.ToString());
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
_httpClient.DefaultRequestHeaders.Add("x-api-key", Account.ApiKey);
var response = await _httpClient.GetAsync($"/v1/apps/appid/query?query={querystring}");
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsStringAsync().Result;
}
else
{
return response.ReasonPhrase;
}
}
}
public class ApiLogController{
private readonly AzureApiClient _apiClient;
public ApiLogController(AzureApiClient apiClient)
{
_apiClient = apiClient;
}
[HttpGet]
[ProducesResponseType(200)]
public async Task<IActionResult> GetApiCallDetails(){
string querystring = "traces| sort by timestamp desc "
_apiClient.GetQuery(querystring)
// 其他代码
}
}</code></pre>
<p>当第一次调用时,很快响应成功了,返回了正确的数据,但是同样的条件间隔几秒之后,再次调用则响应失败。报错:</p>
<blockquote>A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond。</blockquote>
<p>第一次调用成功之后,间隔的足够久或者重启系统,可以再次成功调用。</p>
<p>一开始我以为是Azure的Application Insights REST API设定问题,不允许短时间内再次调用,但是我用postman测试该url是可以短时间内多次调用的,后来我就怀疑我的代码问题,然后我单元测试上面的方法,如下:</p>
<pre><code class="C#">[Fact]
public async void TestGetQuery(){
string querystring="trace | sort by timestamp desc";
GetQuery(querystring)
}</code></pre>
<p>这样单元测试,是可以多次启动调用的,然后我想,我多次启动单元测试其实相当于我的系统多次重启,这种情况其实判断不了代码是否有问题。于是,我把单元测试代码修改成如下:</p>
<pre><code class="C#">[Fact]
public async void TestGetQuery(){
string querystring="trace | sort by timestamp desc";
for(int i = 0; i < 3; i++){
GetQuery(querystring)
Thread.Sleep(2000);
}
}</code></pre>
<p>两秒内重复请求,报了和上面一样的错误:</p>
<blockquote>A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond。</blockquote>
<p>总感觉,这个报错大意就是httpclient无法建立连接了,我是纳闷,才请求一个难道就耗尽资源了?</p>
如何订阅一个REST API,持续接受JSON数据
https://segmentfault.com/q/1010000021831489
2020-02-25T09:35:42+08:00
2020-02-25T09:35:42+08:00
DennisLee
https://segmentfault.com/u/dennislee
0
<p>我想从一个远端服务器持续接收一个JSON数据REST API地址是<strong><a href="https://link.segmentfault.com/?enc=VCFt1D3XMTyqc46hhsMwQQ%3D%3D.2e%2FsIhY3%2FAKM4iXWWMydRY4cvPFmsRhlpOTulT3evQw%3D" rel="nofollow">http://192.168.1.101</a>:8000/v1/status</strong>,可以从这个接口持续GET到数据,但是我想一有数据产生,我这边的服务器就可以接受到,请问应该怎么做呢?就是实现类似发布订阅的功能<br>JSON对象例如:</p>
<pre><code class="javascript">{
"run-status": 0,
"opr-mode": 0,
"ready": false,
"not-ready-reason": 1,
"alarms":["ps", "prm-switch"]
}</code></pre>
<p>我用的是Spring Boot。</p>
wp的register_rest_field添加自定义字段中获取用户Agent怎么获取不了?
https://segmentfault.com/q/1010000021676922
2020-02-03T13:40:07+08:00
2020-02-03T13:40:07+08:00
hlbj105
https://segmentfault.com/u/hlbj105
0
<pre><code>register_rest_field("comment", "userAgentInfo", array(
"get_callback" => function ($object) {
$array = array(
"object" => $object,
"userAgent" => $object[author_user_agent],
);
return $array;
},
"schema" => null
));</code></pre>
<p>在object中没看到有agent相关的信息<br>但在数据库中的comments表中有看到comment_agent的值</p>
请教 rest api 如何设计+django rest_framework 如何实现?
https://segmentfault.com/q/1010000021178051
2019-12-03T10:06:19+08:00
2019-12-03T10:06:19+08:00
chaleaoch
https://segmentfault.com/u/chaleaoch
0
<ul><li>
<p>Root</p>
<ul>
<li>
<p>router1</p>
<ul>
<li>
<p>category1</p>
<ul>
<li>
<p>interface1</p>
<ul>
<li>prefix1</li>
<li>prefix2</li>
</ul>
</li>
<li>
<p>interface2</p>
<ul><li>prefix21</li></ul>
</li>
</ul>
</li>
<li>category2</li>
</ul>
</li>
<li>
<p>router2</p>
<ul><li>category21</li></ul>
</li>
</ul>
</li></ul>
<p>大概是这样一个结构. 其中 category 可忽略.</p>
<p>获取 router 信息<br>get <code>*/api/routers/</code></p>
<pre><code>default_router.register(
"api/routers", RouterViewset, base_name="RouterViewset"
)</code></pre>
<p>获取 category summary 信息<br>get <code>*/api/routers/category_summary</code><br>在 RouterViewset 中定义</p>
<pre><code> @detail_route(methods=["get"])
def category_summary(self, request, router_id):
pass</code></pre>
<p>获取某个 router 中的 interface 信息<br>是这么写吧?<br>get <code>*/api/routers/<router_id>/interfaces</code><br>这样实现</p>
<pre><code> @detail_route(methods=["get"])
def interfaces(self, request, router_id):
pass</code></pre>
<p>还是这么写?<br>get <code>*/api/interfaces/?router-id=<id></code></p>
<pre><code>default_router.register(
"api/interfaces", InterFaceViewset, base_name="InterFaceViewset"
)</code></pre>
<p>以此类推 prefix 如何设计 api 同时如何用 drf 的 router 和 viewset 实现?<br>譬如<br><code>*/api/routers/<router_id>/interfaces/<interface_id>/prefixes</code><br>类似这样吗?</p>
<pre><code>default_router.register(
"routers/(?P<router_id>\d+)/interfaces/", InterFaceViewset, base_name="EmixInterFaceViewset"
)
@detail_route(methods=["get"])
def prefixes(self, request, router_id, interface_id):
pass</code></pre>
<p>上面的 url 岂不是被覆盖了?<br>因为:</p>
<pre><code> "routers/(?P<router_id>\d+)/interfaces/", InterFaceViewset, base_name="EmixInterFaceViewset"</code></pre>
<p>和</p>
<pre><code>get `*/api/routers/`
default_router.register(
"api/routers", RouterViewset, base_name="RouterViewset"
)</code></pre>
<p>之间有重复</p>
如何设计获取用户列表接口:获取全部用户列表 及 分页获取用户列表?
https://segmentfault.com/q/1010000019489072
2019-06-15T17:23:16+08:00
2019-06-15T17:23:16+08:00
ryoma
https://segmentfault.com/u/_ryoma
0
<p>问大家一个接口设计的问题,比如获取用户列表,有两个需求:<br>1:获取全部用户列表<br>2:以分页形式获取用户列表</p>
<p>大家一般会把接口设计成什么样的?</p>
<p>按照我之前的习惯:获取单个用户 GET /users/:id</p>
<p>在有需求1时,我把接口设计为: GET /users<br>但是当遇到需求2时,本来打算设计为 GET /users 参数:page、pageSize。如果传入 page pageSize 即为分页,否则默认不分页。</p>
<p>但是此时有个需求,如果客户端没有传入,希望后端默认有个分页(是有这么个鬼畜的需求,历史遗留问题),所以此时 API 设计就不能只用 /users,会发生冲突。<br>想问一下大家,这种情况下 需求2 如何设计 API 呢?</p>
Golang Restful API 怎样认证?
https://segmentfault.com/q/1010000016749920
2018-10-20T23:09:01+08:00
2018-10-20T23:09:01+08:00
麦迪文
https://segmentfault.com/u/yzbubble
0
<p>想知道 Golang Restful API 怎样认证比较合适,关于这方面没啥头绪。</p>
jersey中一个API去调用另一个API
https://segmentfault.com/q/1010000016495057
2018-09-23T04:02:43+08:00
2018-09-23T04:02:43+08:00
翾涛
https://segmentfault.com/u/wei_5b9faecddc79b
0
<p>在jersey中怎么实现一个API1,当用户call这个API的时候把request转发给另一个API2,通过API2处理请求以后返回结果给API1</p>
如何记录Rest API接口的信息
https://segmentfault.com/q/1010000016432198
2018-09-17T23:24:59+08:00
2018-09-17T23:24:59+08:00
翾涛
https://segmentfault.com/u/wei_5b9faecddc79b
0
<p>当用户call不同的API的时候,怎么样能获取到这些接口的信息呢?比如说call这个API的userid,什么时候call的这个api,call了哪个方法等等这些信息。用的JAX-RS</p>
Oauth2之QQ互联文档的疑问
https://segmentfault.com/q/1010000014580328
2018-04-25T10:29:42+08:00
2018-04-25T10:29:42+08:00
网络小白
https://segmentfault.com/u/lant_5865ebd5512c1
1
<p>腾讯QQ互联平台的OAuth协议有两种模式, 具体流程都了解了, 但不太清楚使用场景上的不同:</p>
<p>第一种是<a href="https://link.segmentfault.com/?enc=FGKHDxQA%2FQ66We4rXa6z%2Fw%3D%3D.deZpc7HoolunmbExJTyPclERgJoZRcaNtYR5z%2BJ8NEMp6AURcZbNW29yITmfpyY0cXx9QM2iQMR688%2FkliZWD6t3uHyUYQn9iPMBls5yJkIsImF4t43mYtuaevurSGQ0FNnnfwTmcuTCFgO4MC48AA%3D%3D" rel="nofollow">client-side模式</a>: 使用的是OAuth2的Implicit_Grant模式</p>
<p>第二种是 <a href="https://link.segmentfault.com/?enc=fSQgYWFyw4OHtNQVrp%2FYFQ%3D%3D.YMptQiQlcFN7wGYmekJv704M%2FeaWvAuhdWN4v5UwjE%2F857y4l4Pin203hG%2BrTuxdN%2FFwlymlsWoSyT5CUj3RADSqGpatdwA7%2F7kvhE%2F%2FFrpeNE%2B2tAG0icd0Kn74a7Td" rel="nofollow">server-side模式</a>: 使用的是OAuth2的Authorization_Code模式</p>
<p>文档中说了: client-side模式, 适用于需要通过客户端访问的方式,例如需要通过浏览器的javascript代码,或者电脑/移动终端上的客户端访问时</p>
<p>没理解啥意思, 这不就是正常的通过浏览器访问么? 和server-side模式的场景看着是一样的啊!</p>
<p>求大神给指点</p>
id该放在API的路径里还是request里?
https://segmentfault.com/q/1010000014101968
2018-03-31T06:06:17+08:00
2018-03-31T06:06:17+08:00
WEB松
https://segmentfault.com/u/websong_5a5dbacf3530a
0
<p>我看到一个例子他删除的时候id是放在url里,如下</p>
<pre><code>router.delete('/:id',function(req,res){})</code></pre>
<p>但是更新的时候确实放在req.body里,如下</p>
<pre><code>router.update('/',function(req,res){
//用req.body._id
})
</code></pre>
<p>这是为什么?有什么特定规则吗?<br>假如我要用get和post的话id又该放在哪个位置?</p>
nodejs调用第三方 API,一般用哪些框架呢?
https://segmentfault.com/q/1010000013580422
2018-03-07T15:39:25+08:00
2018-03-07T15:39:25+08:00
qngyun1029
https://segmentfault.com/u/qngyun1029
0
<p>现在vue项目里面需要调用(每5s调用一次)第三方提供的 api,需要模拟 http 请求,然后得到 json 结果,这个大家一般用什么前端框架呢?还是自己封装一个<code>http</code>模块呢?</p>
<p>如下(网上找的一段代码)</p>
<pre><code>var http = require("http");
var data = {username:"hello",password:"123456"};
data = JSON.stringify(data);
//data = require('querystring').stringify(data);
var opt = {
host:'localhost',
port:'8080',
method:'POST',
path:'/loginForeign.jspx',
headers:{
"Content-Type": 'application/json',
"Content-Length": data.length
}
}
var body = '';
var req = http.request(opt, function(res) {
console.log("response: " + res.statusCode);
res.on('data',function(data){
body += data;
}).on('end', function(){
console.log(body)
});
}).on('error', function(e) {
console.log("error: " + e.message);
})
req.write(data);
req.end(); </code></pre>
Restful api 怎么感觉有两个授权: 接口授权和登录授权
https://segmentfault.com/q/1010000011645800
2017-10-20T14:12:30+08:00
2017-10-20T14:12:30+08:00
网络小白
https://segmentfault.com/u/lant_5865ebd5512c1
0
<p>对于restful api接口权限这里, 之前虽然做过相关开发, 但还是没底, 因为没有看到过特别完善的资料, 但在接口权限校验这里个人比较晕乎的是两点:</p>
<ol>
<li>接口权限</li>
<li>登录认证</li>
</ol>
<p>基本上在网上一搜 restful api 接口权限, 出来的基本上就是 oauth2, jwt, api_key等知识, 而且好像说的都差不多; </p>
<p>问题是 api 接口授权 和 登录授权 貌似不是一回事吧, 我都不知道网上那些资料说的到底是哪个授权?</p>
<p>个人认为:</p>
<ol>
<li>首先应该是要验证到底当前调用api的客户端, 有没有调用该api的权限, 这个貌似用oauth或者jwt 好像都能做 (可以在授权服务器上创建一个应用 配置前段逻辑代码部分有访问...api的权限, 然后分配access_token即可)</li>
<li>如果客户端能够访问这个api接口, 那如果这个api接口需要用户登录才能访问呢? 好像 oauth或者jwt也都能生成access_token来实现</li>
</ol>
<p>难道我这里的接口授权来一次oauth, 然后登录在来一次oauth么??</p>
<p>还有个疑问就是 oauth 的授权码模式经历了一大堆步骤最后就是仅仅通过一个access_token来进行授权校验 。。。。。。 总感觉是不是太简单了, 黑客们才不管你中间乱七八糟多少步呢, 我想他们只会去伪造你最后的access_token去访问敏感接口吧</p>
几种不同风格的json返回值应该怎么取舍
https://segmentfault.com/q/1010000011352554
2017-09-25T21:36:13+08:00
2017-09-25T21:36:13+08:00
nbsaw
https://segmentfault.com/u/nbsaw
0
<p>后端回给前端的数据格式有很多种。</p>
<p>下面以一个登陆返回的数据为例子,这里写了一下它们的成功和失败的请求报文。</p>
<p>第一种。最简单粗暴的。通过HTTP状态码来表示失败和成功的状态。只有在错误或者其他的情况的时候才会有<code>message</code>信息。</p>
<pre><code># 登陆成功
HTTP/1.1 200 OK
{
"user" : { "name" : "..." , "age" : "..." }
}
# 密码错误
HTTP/1.1 400 Bad Request
{
"message" : "password invalid"
}</code></pre>
<p>第二种是前面一种的类似的版本。不过它会在任何时候都带上<code>message</code>信息。</p>
<pre><code># 登陆成功
HTTP/1.1 200 OK
{
"message" : "success" ,
"user" : { "name" : "..." , "age" : "..." }
}
# 密码错误
HTTP/1.1 400 Bad Request
{
"message" : "password invalid"
}</code></pre>
<p>第三种的状态码永远都是200。因为它有属于自己的状态码,非HTTP协议规定的状态码。一般是自己的业务的状态码。</p>
<pre><code># 登陆成功
HTTP/1.1 200 OK
{
"status" : 0,
"message" : "success" ,
"user" : { "name" : "..." , "age" : "..." }
}
# 密码错误
HTTP/1.1 200 OK
{
"status" : 419
"message" : "password invalid"
}</code></pre>
<p>第四种。和第三种混用。包含了自己业务的状态码还有HTTP规定的状态码。</p>
<pre><code># 登陆成功
HTTP/1.1 200 OK
{
"status" : 0,
"message" : "success" ,
"user" : { "name" : "..." , "age" : "..." }
}
# 密码错误
HTTP/1.1 400 Bad Request
{
"status" : 419
"message" : "password invalid"
}</code></pre>
<p>上面的几种格式应该怎么选择呢。或者有其他更好的格式。如果上面有给你不明所以的格式。那大概就是我写错了。直接跳过就好了。讲讲看的明白的格式就好了。谢谢</p>
RESTful API 如何表示资源的数量?
https://segmentfault.com/q/1010000011145757
2017-09-13T11:54:49+08:00
2017-09-13T11:54:49+08:00
零崎莲实
https://segmentfault.com/u/zerozaki
0
<p>RESTful获取资源是这样的<br><code>.get("/events")</code><br>那么获取资源的数量应该是什么样的?<br><code>.get("/events/count")</code><br>或者是这样?<br><code>.count("/events")</code></p>
REST风格URL 不符合CURD的操作怎么起名?
https://segmentfault.com/q/1010000009840962
2017-06-19T12:20:59+08:00
2017-06-19T12:20:59+08:00
追风
https://segmentfault.com/u/zhuifeng
0
<p>目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API 格式如何?当开始写一个app的时候,特别是后端模型部分已经写完的时候,不得不殚精竭虑的设计和实现自己app的public API部分。因为一旦发布,对外发布的API将会很难改变。</p>
<p>问题1:<br>发送邮件/mail/1/send 使用POST /mail/send 使用POST<br>该怎么样命名URL呢</p>
<p>问题2<br>获取某个特定用户列表 /getVipUser /user/vip /getUserList?type=vip<br>该怎么样命名URL呢</p>
<p>问题3<br>使用驼峰还是蛇形呢,很纠结,都用过,有人说随便,但是就是纠结。</p>
restful形式的路由的命名重复怎么办?
https://segmentfault.com/q/1010000009851347
2017-06-20T08:35:20+08:00
2017-06-20T08:35:20+08:00
lookas2001
https://segmentfault.com/u/lookas2001
0
<p>比如这个路由<br>GET /users/{id}/comments<br>现在说用户的页面上有一个留言板,打算使用一个comment组件<br>用户在一些帖子中发布的回复,使用的也是这个comment组件<br>数据库设计的时候这两个comment组件使用的是同一个数据表(多态关联)(这点倒是不必担心)<br>重点就是说,这个路由就含义冲突了:<br>显示的是用户留言板(别人发的)呢<br>还是显示用户在帖子中的回复呢</p>
<p>所以说,如何解决这个问题,以restful的形式,区分开这两个路由</p>
<p>抱歉,我是个处女座、、、(但是说也想找到这个问题的最佳解决方式)</p>
<p>其实说,这个问题还有另外一个场景,就是说如何区分follow的我关注的和关注我的。<br>GET /users/{id}/follows<br>这条路由是显示我关注的呢还是关注我的呢</p>
请教一个前后端rest传输数据大小的问题?
https://segmentfault.com/q/1010000009732189
2017-06-10T21:01:32+08:00
2017-06-10T21:01:32+08:00
bytag
https://segmentfault.com/u/bytag
0
<p>就像知乎/quora等网站,当阅读用户的回答或者文章的时候,可以采用read more或者modal阅读整篇文章。</p>
<p>现在有一个相似的业务场景,每次前端向后端请求15篇文章,但是我的问题的是有些文章可能字数有好几万字,这样的话restful-api返回的数据量是否过大。</p>
<p>由于题主对网络数据传输之类的概念理解不是很深,请问一次性返回将近10万字的数据对网络延迟是否有很多的影响?或者说每次我只返回文章前多少个字,当用户点击read more的时候前端再向后端发起请求。</p>
weex里的如何发送delete,put请求到后台
https://segmentfault.com/q/1010000008677406
2017-03-13T18:12:43+08:00
2017-03-13T18:12:43+08:00
exjava
https://segmentfault.com/u/exjava
1
<p>weex里的stream只能发送get,post请求。<br>发送delete,put等调用restful API的后台应该怎么办?<br>尝试用vue-resource,在Web下是没有问题的,android下验证失败,也许是姿势不对。<br>求正确姿势。。。。</p>
restful 重写update action 在重写完后访问域名/v1/product/ID 的时候方法里怎么获取到ID呢?
https://segmentfault.com/q/1010000009331277
2017-05-08T13:32:35+08:00
2017-05-08T13:32:35+08:00
用户bPEOpB
https://segmentfault.com/u/gongheguozhichun
0
<p>Yii2 restful 重写update action 那么问题来了,在重写完后访问api.xxxx.com/v1/product/ID 的时候 方法里怎么获取到ID呢?</p>
<p><img src="/img/bVNjFn?w=758&h=227" alt="clipboard.png" title="clipboard.png"></p>
<p><img src="/img/bVNjGe?w=672&h=433" alt="clipboard.png" title="clipboard.png"></p>
关于Web RESTFUL API设计中对于不同参数相同功能接口定义的疑问
https://segmentfault.com/q/1010000008856505
2017-03-28T10:09:53+08:00
2017-03-28T10:09:53+08:00
利维坦少女
https://segmentfault.com/u/catscarlet
0
<p>比如说我要做一个登录功能,允许用户使用:<strong>账号/密码</strong>、<strong>手机/验证码</strong>、<strong>邮箱/验证码</strong>、<strong>一次性链接</strong> 多种方式进行登录,后端数据处理层都是使用的 loginByPassword、loginByCaptcha、loginByTemporarylink这些内部接口处理。</p>
<p>那么对外的接口应该如何暴露给用户?</p>
<p>看到两种方案:</p>
<ul>
<li><p>第一种:依旧是传统思路,前端如果用 <strong>账号/密码</strong> 登录,那么就 <code>POST /login/login.php</code>;如果用 <strong>手机/验证码</strong> 登录,那么就<code> POST /login/loginByCaptcha.php</code>,不同的登录方式POST到不同的地址。这样做最外层处理比较容易,只要检查POST的数据是否合法就可以了。</p></li>
<li><p>第二种:前端统一都用 <code>POST /login/login.php</code> 这个唯一接口,后端接口根据用户 POST 过来的数据进行判断,如果有<code>['username']和['password]</code>就走后端 <code>loginByPassword</code> 逻辑,其它同理。</p></li>
</ul>
<p>PS:最后地址都会用路由处理,会隐藏 <code>*.php</code> 的,因此这个地址不在问题讨论范围。</p>
json-server的post如何请求?
https://segmentfault.com/q/1010000008670618
2017-03-13T11:21:37+08:00
2017-03-13T11:21:37+08:00
劉凯里
https://segmentfault.com/u/kyrieliu
1
<p>使用json-server进行前端搬砖工作,get请求正常,使用post请求时控制台报错,状态码500(internal server error) <br>求问,有填过坑的大神来解答一下吗?</p>
REST架构是否取代了原有的某种策略?
https://segmentfault.com/q/1010000008584335
2017-03-06T14:23:40+08:00
2017-03-06T14:23:40+08:00
titian
https://segmentfault.com/u/titians
0
<p>例如现在的一个APP可能可以利用<code>/user/id</code>或<code>/user/article</code>这样的RESTful的API来进行工作。<br>那么在REST概念出现之前,在它的这个位置上的东西是什么呢?有什么类似的约定或者规范吗?</p>
前后端分离的一些问题
https://segmentfault.com/q/1010000008525751
2017-03-01T11:48:47+08:00
2017-03-01T11:48:47+08:00
zouliming
https://segmentfault.com/u/zouliming
0
<p>目前我们团队正在做前后端分离,前端用vue做,有一些经验上的问题问大家。</p>
<ol>
<li><p>比如页面上有个部门的数据,有个列表数据,列表里的部门字段,应该返回部门id,还是返回部门名称?<br>(返回id,则由前端去组织显示内容;返回名称,则直接显示;)</p></li>
<li><p>一个页面假如需要请求5个接口,来来回回的请求响应会耽误不少时间;有没有什么技术,一次性请求后端的5个接口,只用消耗一次的等待时间就能拿到5个接口的数据?</p></li>
</ol>
前段接口模块是否需要和后台管理模块从同一工程分离?
https://segmentfault.com/q/1010000008004896
2017-01-04T12:23:40+08:00
2017-01-04T12:23:40+08:00
JamieXu
https://segmentfault.com/u/jamiexu
0
<p>准备搭建一个基于SpringBoot的工程,使用restful风格对外提供接口。<br>接口的使用方主要是移动端APP和内部的后台管理,<strong>现在考虑这两个面向不同方向的接口是否需要分开为不同工程</strong>。</p>
<p>分不分开我目前能想到到的主要是部署,以及代码功能复用的问题,因为如果某一方需求变更频繁,在同一工程下部署却要对另一方(没有任何更新)产生影响;还有两者肯定会有很多功能代码重合,在一起可复用。</p>
<p><strong>希望有过相同思考或者实践经历的小伙伴能分享一下相关经验~谢谢~</strong></p>
RESTful 机制下还有 page, request, session,application等变量作用域吗?
https://segmentfault.com/q/1010000007868514
2016-12-20T22:13:00+08:00
2016-12-20T22:13:00+08:00
esolve
https://segmentfault.com/u/esolve
0
<p>好像RESTful 机制下没有这些作用域了<br>那是如何替代的?</p>
关于restapi的几个问题
https://segmentfault.com/q/1010000007178863
2016-10-15T19:55:27+08:00
2016-10-15T19:55:27+08:00
twogoods
https://segmentfault.com/u/twogoods
0
<p><code>api.example.com/book [get]</code>代表列出所有书<br><code>api.example.com/book [post]</code>新增一本书<br>我现在项目中用户登陆会获得一个token,来校验请求,上面两个例子,get方法无论登不登陆都可以调用,post方法需要校验token才可以调用。现在是用了一个拦截器进行检验,因为上面两个url是一样的,我必须在拦截器的逻辑里判断是什么请求才能做后面的工作,这样的情况一多,拦截器里不同的url和方法都需要写判断代码,感觉不好,有没有更好的思路?</p>
请问使用fetch api库请求 的结果重新包装一下?
https://segmentfault.com/q/1010000007125506
2016-10-11T08:10:54+08:00
2016-10-11T08:10:54+08:00
xjdata
https://segmentfault.com/u/xjdata
0
<p>大家好, 我使用这个库<a href="https://link.segmentfault.com/?enc=Wal4HjKpKShWE8s5ZGdn0w%3D%3D.3lnEK6ykdAFe5lPOQ90kncGlBFVjnn8RlyJg%2FhFhtDjzGBcJe5dxZ6JI%2Fo%2BzmZcEmjahjAKIR4%2BOW%2Fa2AwUAog%3D%3D" rel="nofollow"></a><a href="https://link.segmentfault.com/?enc=mL0xZz%2FvplY85dx%2B1e6sag%3D%3D.nl0KxTIHFDrObZygCORcDq4X7WDG8ZmruzvfXsBj0045P%2Bo8xU%2FoJMY1RCJZD030oSK9yXdQjL2bfuwog%2BoOsA%3D%3D" rel="nofollow">https://github.com/dvajs/dva/...</a>请求yii2的rest api时, 如何才能将服务器返回的头部<code>x-pagination-page-count, x-pagination-total-count</code>等信息包装进返回结果呢?</p>
<h3>当前api 返回信息的头部已包含下列信息</h3>
<pre><code>x-pagination-current-page:1
x-pagination-page-count:35
x-pagination-per-page:12
x-pagination-total-count:411</code></pre>
<p>我希望将返回的的data重新包装下,使data对象包含list(原来的返回结果), 服务器头信息的x-pagination-total-count,x-pagination-page-count.等信息 </p>
<p>但是现在 我只能获取到, 纯粹的rest返回结果 是个数组. 我尝试在 request类中重新封装数据, 各种尝试都失败了. 各种搜 可能是关键词不对 也没有找到解决办法. </p>
<p>请问各位大神, 如何 才能包装成我需要的 对象呢? 谢谢!!!</p>
<h3>请求代码如下:</h3>
<pre><code> const {data} = yield call(query, parse(payload));
if (data) {
console.log(data); //!!!这里!!! 我希望将这里返回的data 重新包装下,使data对象list, 服务器头信息,x-pagination-total-count,x-pagination-page-count.等信息
// 但是现在 我只能获取到, 纯粹的rest返回结果 是个数组. 我尝试在 request类中重新封装数据, 各种尝试都失败了. 各种搜 可能是关键词不对 也没有找到解决办法.
yield put({
type: 'querySuccess',
payload: {
list: data.list,
total: Number(data.total),
current: Number(data.current),
pageSize: data.pageSize ? data.pageSize : 12,
}
});
}</code></pre>
<h3>异步方法如下:</h3>
<pre><code>export async function query(params) {
return request(`/api/users?${qs.stringify(params)}`);
}</code></pre>
<h3>request类 如下:</h3>
<pre><code>import fetch from 'dva/fetch';
function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
//这里是可以读取到这些信息的. 但是我不会重新包装.
console.log(response.headers.get('x-pagination-page-count')); //35
console.log(response.headers.get('x-pagination-total-count')); //411
return response;
}
const error = new Error(response.statusText);
error.response = response;
throw error;
}
function parseJSON(response) {
return response.json();
}
/**
* Requests a URL, returning a promise.
*
* @param {string} url The URL we want to request
* @param {object} [options] The options we want to pass to "fetch"
* @return {object} An object containing either "data" or "err"
*/
export default function request(url, options) {
return fetch(url, options)
.then(checkStatus)
.then(parseJSON)
.then((data)=>({data}))
.catch((err) => ({ err }));
}
</code></pre>
<h3>yii2 的rest controller 如下:</h3>
<pre><code><?php
namespace api\modules\test\controllers;
use yii;
use yii\helpers\ArrayHelper;
class UsersController extends yii\rest\ActiveController
{
public $modelClass = '\common\models\User';
public function behaviors() {
return ArrayHelper::merge(parent::behaviors(), [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
// restrict access to
'Origin' => ['*'],
'Access-Control-Request-Method' => ['*'],
'Access-Control-Request-Headers' => ['*'],
'Access-Control-Allow-Credentials' => true,
// Allow OPTIONS caching
'Access-Control-Max-Age' => 3600,
// Allow the X-Pagination-Current-Page header to be exposed to the browser.
'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
],
],
]);
}
public function actions()
{
$actions = parent::actions();
// 禁用"delete" 和 "create" 操作
unset($actions['delete'], $actions['create']);
return $actions;
}
}</code></pre>
Call url with restfull
https://segmentfault.com/q/1010000006939153
2016-09-19T12:22:32+08:00
2016-09-19T12:22:32+08:00
rayhongjiankong
https://segmentfault.com/u/rayhongjiankong
0
<p>make sure the url is called only in the controller and build the models/views to display the data.<br>What's the meaning?</p>
使用springmvc技术编写Restful API服务,权限管理使用shiro好还是spring security好?
https://segmentfault.com/q/1010000006186463
2016-08-05T22:11:19+08:00
2016-08-05T22:11:19+08:00
alay
https://segmentfault.com/u/alay
0
<p>各位大神好,小弟最近在使用springmvc编写一个restful api服务,关于权限管理这里有点疑惑。</p>
<p>目前用户登录认证成功后回复一个token,后续操作根据token进行认证。由于系统中有三种角色,所以需要进行权限控制。使用shiro在权限匹配方面的确比较方便,如users:*,就可表示对user有全部权限,但是shiro对于restful的支持似乎不是太好,所以小弟想问一下使用spring security是不是好一点?</p>
<p>谢谢各位大神!</p>
RESTful的verb真的能把实际项目中碰到的所有场景都能描述清晰吗?
https://segmentfault.com/q/1010000005807296
2016-06-27T10:17:00+08:00
2016-06-27T10:17:00+08:00
jimmy在上海
https://segmentfault.com/u/eecjimmy
0
<p>如果设计RESTful架构设计风格, 我觉得还是描述不清楚项目中的所有的场景. 比如说<strong><em>校验</em></strong>验证码的验证, 这个场景按照RESTful的风格设计应当如何设计呢?<br>V站镜像地址: <a href="https://link.segmentfault.com/?enc=O1xxBACD2JFLhBKUG%2BKlhg%3D%3D.ZDa63BAHC8glMdvYBRcpN91dj3Ooch5Mg25KgiHCWjc%3D" rel="nofollow">https://www.v2ex.com/t/288528</a></p>
远端RESTful API调用
https://segmentfault.com/q/1010000005606375
2016-05-31T19:40:58+08:00
2016-05-31T19:40:58+08:00
louisyw
https://segmentfault.com/u/gcc
0
<pre><code>GET /api/accounts HTTP/1.1
Content-Type: application/json
X-Access-Token: username:token</code></pre>
<p>这种 API,Python 要怎么调用啊??<br>POST 登录生成 token 以后要怎么调用啊??? 求告知</p>
怎样用REST设计 取得全部资源的部分信息的API
https://segmentfault.com/q/1010000004891786
2016-04-08T09:03:27+08:00
2016-04-08T09:03:27+08:00
DanoR
https://segmentfault.com/u/zheung
0
<p>资源的数据结构:<br><code>文章(标题, 作者, 正文)</code><br><code>article(title, author, content)</code></p>
<p>由于正文内容很大, 不能一开页面就 <code>GET /articles</code></p>
<p>于是我把<code>article</code>分割为<code>(header, content)</code>两部分<br>当然在数据库中是不变的.</p>
<p>这时用REST我就有疑问了</p>
<p><code>GET /articles/headers</code> ?<br>还是<br><code>GET /articlesHeaders</code> ?<br>还是<br><code>GET /articles/?status=header</code> ?<br>还是其他?</p>
<p>看过网上一些文章关于子资源的<br>只有类似<code>GET /articles/14/headers</code>的应用<br>这明显不是我需要的, 因为来请教一下, 感谢万分~</p>
请问有没有简单的rest api的学习实例
https://segmentfault.com/q/1010000004869989
2016-04-05T15:12:11+08:00
2016-04-05T15:12:11+08:00
jql09
https://segmentfault.com/u/jql09
0
<p>求一个简单的rest api的实例,用来学习下rest api</p>
请问REST API如何设计
https://segmentfault.com/q/1010000004643351
2016-03-19T20:41:32+08:00
2016-03-19T20:41:32+08:00
jql09
https://segmentfault.com/u/jql09
0
<p>现在需要使用php做一个云盘,实现文件的上传、下载、删除以及文件夹的浏览等。<br>请问如何设计rest api接口?<br>比如上传test.txt文件到/files目录设计成:POST/files/test.txt。下载test.txt的话设计成GET/files/test.txt 可以吗?<br>有没有具体的实例啊?</p>
关于Rest风格的API的如何做权限控制
https://segmentfault.com/q/1010000004444303
2016-02-17T09:38:29+08:00
2016-02-17T09:38:29+08:00
LiYunpeng
https://segmentfault.com/u/liyunpeng
0
<p>想要实现的效果是</p>
<p>比如如下两个接口<br>GET /order/{orderId}</p>
<p>POST /order/{orderId}/abc/{abcId}</p>
<p>想通过不同的角色或用户来分别限制他们能访问接口的某一个,即拥有权限的一个</p>
<p>现在的问题就是,通过什么样的方式能够将URL和上面的接口路径分别匹配上呢?<br>使用的是SpringMVC。</p>
<p><strong>注:上面写的接口URL只是简单的,还有复杂的里面参数可以是正则表达式,或者两个参数通过特定字符串拼接的(如{param1}-{param2},所以匹配路径不能用正则来做,这块不太了解SpringMVC的底层是如何实现的,求大神解答。</strong></p>
RESTful API中的认证如何处理,以及如何保证无状态?
https://segmentfault.com/q/1010000004417010
2016-02-05T11:02:21+08:00
2016-02-05T11:02:21+08:00
wcflmy
https://segmentfault.com/u/wcflmy
0
<p>1、看到网上说使用token,在登录的时候,通过<a href="https://link.segmentfault.com/?enc=cO7CBSFQxuKaEy92lWcplA%3D%3D.sRqOr8JTMZ%2B9paYMTtR6ZyAL68AjLmNXcgk0w5m3Enw%3D" rel="nofollow">https://xxx/login/</a>这个类似的接口生成一个token,并在以后的每次请求中带上那个token(使用authorization头部),服务端对每个请求都进行这个token的验证,那这个token如何生成以及在服务端如何验证(希望能详细一点,或者有比较好的参考)?<br>2、使用上述的方法,能否保证REST的无状态性呢?<br>3、假设使用authorization头部是无状态的,这里我有个想法,在登录成功后,生成一个唯一的key,并将这个key保存到数据库中,并存到cookie中,以后的每次请求都带上这个cookie,服务端验证数据库中是否存在这个key,存在表示已登录,不存在表示未登录,并在登出时,从数据库中删除这个key。这种是否也是无状态的呢?</p>
设计RESTful API的delete动作的时候如果要一次请求删除多个条目应该如何设计?
https://segmentfault.com/q/1010000004407452
2016-02-03T00:32:50+08:00
2016-02-03T00:32:50+08:00
perqin
https://segmentfault.com/u/perqin
1
<p>如果是需要删除一个条目,可以直接将需要删除的条目的id放进url里面,比如<code>http://example.com/posts/2016</code>,但是如果需要再一次请求里面删除多个条目,应该如何设计比较合理呢?我现在想到的是以下两种方法:</p>
<ol>
<li><p>用逗号分隔放进url里面:<code>http://example.com/posts/2016,2017</code>;</p></li>
<li><p>将需要删除的一系列id放进请求体里面,但是似乎没有这样的标准。</p></li>
</ol>
<p>想知道大家是如何设计的呢?</p>
其他语言用Bmob RestApi开发遇到请求security的错误
https://segmentfault.com/q/1010000000607649
2014-07-16T17:59:37+08:00
2014-07-16T17:59:37+08:00
已注销
https://segmentfault.com/u/bmob_cloud
0
<p>我用PHP开发,遇到请求security的错误,什么原因?</p>