when should I use POST and GET?

This is my WCF service, where user can find message for him. Simple:

    [OperationContract]
    [WebGet(UriTemplate = "/GetMessages/{UserGLKNumber}/{UserPassword}/{SessionToken}")]
    Messages GetMessages(string SessionToken, string UserPassword, string UserGLKNumber);

I have concerns about that line: {UserGLKNumber}/{UserPassword}/{SessionToken}

I have to authenticate user, before he get that messages. But with GET method, I cannot send objects, like in POST .

Is it consistent with REST pattern?

Please, clear up my doubts.


There are already posts & question about this, I am summarizing all of them

  • POST verb is used when are you creating a new resource (a file in your case) and repeated operations would create multiple resources on the server. This verb would make sense if uploading a file with the same name multiple times creates multiple files on the server.

    PUT verb is used when you are updating an existing resource or creating a new resource with a predefined id. Multiple operations would recreate or update the same resource on the server. This verb would make sense if uploading a file with the same name for the second, third... time would overwrite the previously uploaded file.

  • POST everytime you are modifying some state on the server like database update, delete. GET for readonly fetching like database select.

  • GET : Get a collection of entries (as a feed document) or a single entry (as an entry document).

    POST : Create a new entry from an entry document.

    PUT : Update an existing entry with an entry document.

    DELETE : Remove an entry.

  • Source: Difference between PUT and POST using WCF REST

    Another Useful reads are:

    What's the difference between a POST and a PUT HTTP REQUEST?

    http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide

    http://msdn.microsoft.com/en-us/magazine/dd315413.aspx

    http://social.msdn.microsoft.com/Forums/vstudio/en-US/643e0d8b-80bb-45eb-8a84-318ac8de4497/difference-between-the-rest-verbs-put-and-post?forum=wcf


    In terms of Restful services...

    Post :
    1. Its a secure to use in application rather than get.
    2. Its not configure proxy server.
    3. Big length of data restricted by web server.
    4. Its not cached on browser.
    5. Its take input as xml

    Get :
    1. Its a not secure to use in application rather than get.
    2. Its configure proxy server.
    3. Its use url encoding technique.
    4. Its cached on browser.
    5. Its a default if you are not declaring anyone.
    6 Its take input as a string an returned a formatted output.

    链接地址: http://www.djcxy.com/p/41034.html

    上一篇: asp.net mvc和web api哪个更好Http POST或者PUT

    下一篇: 什么时候应该使用POST和GET?