【问题标题】:Tell me how to make a POST request to the api. Using restangular告诉我如何向 api 发出 POST 请求。使用休息角
【发布时间】:2014-01-09 15:33:45
【问题描述】:

我正在使用 Django REST 框架。 如果您在页面上手动输入数据,则编写 API 有效:http://example.com/en/api/v1/add_comment/

views.py (API)

class AddComment(generics.CreateAPIView):
"""
Create new comment.
Example API structure:
{
    "post_pk": 1,
    "name": "MyName",
    "email": "example@email.com",
    "text": "This is text message!"
}
"""
model = Comment
serializer_class = CommentSerializers

而且 api 有效。

controllers.js

var app = angular.module('controllers', []);

app.controller('CommentAddCtrl', function($scope, Restangular){
    $scope.logComment = function(mail, name, text){
        var url = window.location;
        var pk = url.hash.split('$pk:')[1];
        var url_add_comment_api = './en/api/v1/add_comment';

        if (mail === undefined || name == undefined || text === undefined)
            alert ('Error!');
        else {
            var comment = {
                  post_pk: pk,
                  name: name,
                  email: mail,
                text: text
                };
            this.add_comment = Restangular.all(url_add_comment_api).post(comment);
            }           
    };
});

控制台出错时: 发布http://example.com/en/api/v1/add_comment/ 403(禁止)

【问题讨论】:

  • 你在传递 API 密钥吗?这可能就是为什么它说“403(禁止)”,如果它丢失了
  • 你关注CSRF docs了吗?

标签: javascript python django angularjs restangular


【解决方案1】:

您可能在其中某处丢失了 CSRF 令牌。在此处查看更多信息:Django Cross Site Request Forgery Protection

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2020-11-05
    • 2018-07-19
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    相关资源
    最近更新 更多