endpoints-proto-datastore - POST应该是必需的,但不是GET

时间:2016-10-19 01:56:56

标签: google-cloud-endpoints endpoints-proto-datastore

我们说我有一个带有两个必填字段的模型:

@ExampleModel.query_method(query_fields=('attr1', 'attr2'),
                           path='example', name='list')
    def example_list(self, query):
        return query

然后我想使用端点-proto-datastore来查询 attr1或attr2:

{
 "error": {
  "code": 400, 
  "errors": [
   {
    "domain": "global", 
    "message": "Error parsing ProtoRPC request (Unable to parse request content: Message CombinedContainer is missing required field attr2)", 
    "reason": "badRequest"
   }
  ], 
  "message": "Error parsing ProtoRPC request (Unable to parse request content: Message CombinedContainer is missing required field attr2)"
 }
}

如果我只提供其中一个字段,则会失败 - 从API Explorer中它是必填字段,但API本身会返回:

I made it a little better

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="style.css" type="text/css">
    <script src="script.js"></script>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

    <title>Jquery</title>
    </head>
<body>
    <script>
$(document).ready(function() {
  $("button").click(function() {
    var user = $("#username").val();
    var password = $("#password").val(); //define password variable
    if (user.length === 0 || password.length == 0) {

      $("#error").html("You Must Enter Both Username and Password").css("color", "red");
      $("#error").css("text-align", "center");

    };
if (password.length !== 0) {
      $("#password").css("border", "1px solid black");
    }else{
       $("#password").css("border", "1px solid red");  
    };
if (user.length !== 0) {
      $("#username").css("border", "1px solid black");
    }else{
        $("#username").css("border", "1px solid red"); 
    };
      return false;
  });

  $("#username").mousedown(function() {
    $("#username").css("border", "1px solid black");
    $("#error").html(" ");
  });
});
    </script>
    <div class="tee">
    <h1>Learning jQuery</h1>
    <p>With Charles Agbakwu</p>
    </div>
        <center><table>
            <tr><td>Username:</td></tr><tr><td><input id="username" name="username" type="text"></td></tr><br>
            <tr><td>Password:</td></tr><tr><td><input id="password" name="password" type="password"></td></tr><br>
            </table><br>
    <button>Submit</button></center><br>
    <center><span id="error"></span><span id="error2"></spam></center>
    </body>
    <center><footer><p>Agbakwu &copy;-2016</p></footer></center>
</html>

显然我可以将它们标记为不需要,然后在应用程序代码中处理检查 - 但我想知道其他人是否提出了更好的解决方案。

非常感谢

1 个答案:

答案 0 :(得分:0)

这是一个老问题,但我遇到了同样的困惑。 This是我找到的答案。基本上,如果你想在Post上制作一些强制性的东西但是不需要制作一个自定义的proto类。哪个只能用于方法而不能用于query_method。