首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Slim,Postman和AngularJs:$app->request->getBody() vs $app->request->post()

Slim,Postman和AngularJs:$app->request->getBody() vs $app->request->post()
EN

Stack Overflow用户
提问于 2015-01-09 11:19:08
回答 3查看 2.9K关注 0票数 1

我是个初学者。我在客户端编写了一个由AngularJs GUI和服务器端的PHP组成的测试应用程序。

这是处理请求的角服务。

代码语言:javascript
复制
myApp.factory('Book', ['$resource', 'API_URL', function($resource, API_URL){

    return $resource(API_URL + '/books/:bookId', {bookId: '@bookId'}, {
        get: { method: 'GET', isArray:true },
        update: { method: 'PUT'},
        save: { method: 'POST'},
        delete: {method:'DELETE'},
    });

}]);

当我从角度应用程序提交一本书时,我可以在Slim中通过

代码语言:javascript
复制
$post_a = json_decode($app->request->getBody());
//$post_b = $app->request->post(); //this would be empty

当我使用邮递员并执行一个帖子时,我可以在Slim中使用

代码语言:javascript
复制
//$post_a = json_decode($app->request->getBody()); // this would be empty
$post_b = $app->request->post();

我不明白为什么会有这种区别。你能解释一下吗?

在这两种情况下,我是不是只想用$app->request-> post ()来捕捉帖子呢?为什么只有$app->request->getBody()才能捕获来自角的帖子?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-09 15:50:30

$app->request->post()方法检索在application/x-www-form-urlencoded请求中提交的键/值数据。如果请求使用不同的内容类型(例如application/json),则可以使用$app->request->getBody()方法检索原始请求主体,并根据需要对其进行解码。如果你还有其他问题,请告诉我。

票数 5
EN

Stack Overflow用户

发布于 2016-09-01 06:38:38

你仍然可以用

$post_b = $app->request->post()

在斯利姆。

只要您从html表单(AngularJS)调用此REST服务,就可以将数据传递为格式化的表单值而不是JSON。如果在AngularJS中有JSON格式的数据,则必须首先将其转换为表单。下面是如何调用此REST服务的示例:

代码语言:javascript
复制
Object.toparams = function ObjecttoParams(obj) {
    var p = [];
    for (var key in obj) {
        p.push(key + '=' + encodeURIComponent(obj[key]));
    }
    return p.join('&');
};

$http({
    method: 'POST',
    url: url,
    data: Object.toparams(myobject),
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})

myobject是将要创建的JSON格式的数据

票数 0
EN

Stack Overflow用户

发布于 2015-10-06 10:23:26

,谢谢,Josh..Your的答案对我有用。

应采取以下步骤:

1.您需要在raw选项卡下以json格式发送请求,如下所示:

代码语言:javascript
复制
{"username":"admin","password":"admin"}

2.您需要在标题中将Content-Type设置为application/json

就这样,它会起作用的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27859405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档