JSON verilerini Curl ile bir terminalden / komut sat─▒r─▒ndan Test Spring REST'e nas─▒l POST yapabilirim?


Al─▒nan cevaba git


Ubuntu kullan─▒yorum ve cURL kurdum . Spring REST ba┼čvurumu cURL ile test etmek istiyorum. POST kodumu Java taraf─▒na yazd─▒m. Ancak, cURL ile test etmek istiyorum. Bir JSON verisi g├Ândermeye ├žal─▒┼č─▒yorum. ├ľrnek veriler ┼č├Âyledir:

 {"value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true}
 

Bu komutu kullan─▒yorum:

 curl -i \
    -H "Accept: application/json" \
    -H "X-HTTP-Method-Override: PUT" \
    -X POST -d "value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true \
    http://localhost:8080/xx/xxx/xxxx
 

Bu hatay─▒ d├Ând├╝r├╝r:

 HTTP/1.1 415 Unsupported Media Type
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 1051
Date: Wed, 24 Aug 2011 08:50:17 GMT
 

Hata a├ž─▒klamas─▒ ┼čudur:

Sunucu bu iste─či reddetti, ├ž├╝nk├╝ istek varl─▒─č─▒ istenen kaynak i├žin istenen kaynak taraf─▒ndan desteklenmeyen bir formatta ().

Tomcat g├╝nl├╝─č├╝: "POST / ui / webapp / conf / sil HTTP / 1.1" 415 1051

CURL komutunun do─čru format─▒ nedir?

Bu benim Java yan PUT kodum (GET ve DELETE testlerini yapt─▒m ve ├žal─▒┼č─▒yorlar):

 @RequestMapping(method = RequestMethod.PUT)
public Configuration updateConfiguration(HttpServletResponse response, @RequestBody Configuration configuration) { //consider @Valid tag
    configuration.setName("PUT worked");
    //todo If error occurs response.sendError(HttpServletResponse.SC_NOT_FOUND);
    return configuration;
}
 

2564









Cevap say─▒s─▒n─▒ say: 22






─░├žerik t├╝r├╝n├╝z├╝ application / json olarak ayarlaman─▒z gerekir. Ancak , Bahar taraf─▒nda kabul edilmeyen -d ─░├žerik T├╝r├╝'n├╝ g├Ânderir application/x-www-form-urlencoded .

Curl man sayfas─▒na bakarak, kullanabilece─čini d├╝┼č├╝n├╝yorum -H :

 -H "Content-Type: application/json"
 

Tam ├Ârnek:

 curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"username":"xyz","password":"xyz"}' \
  http://localhost:3000/api/login
 

( -H K─▒saltmas─▒ --header , -d i├žin --data )

Not -request POST olan iste─če ba─čl─▒ kullan─▒rsan─▒z -d olarak, -d bayrak bir POST iste─či ima eder.


Windows'ta, i┼čler biraz farkl─▒d─▒r. Yorum konusuna bak─▒n.


3998







Verilerinizi bir dosyaya koymaya ├žal─▒┼č─▒n, s├Âyleyin body.json ve kullan─▒n.

 curl -H "Content-Type: application/json" --data @body.json http://localhost:8080/ui/webapp/conf
 

510







Huzurlu bulabilirsiniz: https://github.com/micha/resty

Bu komut sat─▒r─▒ REST isteklerini basitle┼čtiren bir CURL sar─▒c─▒ yuvarlakt─▒r. Bunu API u├ž noktan─▒za y├Ânlendirirsiniz ve size PUT ve POST komutlar─▒n─▒ verir. (Ana sayfadan uyarlanm─▒┼č ├Ârnekler)

 $ resty http://127.0.0.1:8080/data #Sets up resty to point at your endpoing
$ GET /blogs.json                  #Gets http://127.0.0.1:8080/data/blogs.json
                                   #Put JSON
$ PUT /blogs/2.json '{"id" : 2, "title" : "updated post", "body" : "This is the new."}'
                                   # POST JSON from a file
$ POST /blogs/5.json < /tmp/blog.json
 

Ayr─▒ca, ─░├žerik T├╝r├╝ ├╝stbilgileri eklemek genellikle yine de gereklidir. Site ba┼č─▒na y├Ântem ba┼č─▒na yap─▒land─▒rma dosyalar─▒ eklemek i├žin varsay─▒lan olarak ayarlamak i├žin bunu bir kez yapabilirsiniz: Varsay─▒lan RESTY se├ženeklerini ayarlama


94







Windows i├žin, -d de─čer i├žin tek bir teklife sahip olmak benim i├žin i┼če yaramad─▒, ancak ├žift teklife ge├žtikten sonra i┼če yarad─▒. Ayr─▒ca k├╝me parantezleri i├žinde ├žift t─▒rnaktan ka├žmam gerekiyordu.

Yani, a┼ča─č─▒daki i┼če yaramad─▒:

 curl -i -X POST -H "Content-Type: application/json" -d '{"key":"val"}' http://localhost:8080/appname/path
 

Ancak a┼ča─č─▒daki ├žal─▒┼čt─▒:

 curl -i -X POST -H "Content-Type: application/json" -d "{\"key\":\"val\"}" http://localhost:8080/appname/path
 

84







Benim i├žin kullanarak ├žal─▒┼čt─▒:

 curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":100}' http://localhost/api/postJsonReader.do
 

Mutlu bir ┼čekilde Spring kontrol cihaz─▒yla e┼čle┼čtirildi:

 @RequestMapping(value = "/postJsonReader", method = RequestMethod.POST)
public @ResponseBody String processPostJsonData(@RequestBody IdOnly idOnly) throws Exception {
        logger.debug("JsonReaderController hit! Reading JSON data!"+idOnly.getId());
        return "JSON Received";
}
 

IdOnly bir kimlik ├Âzelli─či ile basit bir POJO .


81


2012-04-19





├ľrnek olarak, bir JSON dosyas─▒, params.json olu┼čturun ve bu i├žeri─či ona ekleyin:

 [
    {
        "environment": "Devel",
        "description": "Machine for test, please do not delete!"
    }
]
 

Sonra bu komutu ├žal─▒┼čt─▒r─▒n:

 curl -v -H "Content-Type: application/json" -X POST --data @params.json -u your_username:your_password http://localhost:8000/env/add_server
 

52







Bu benim i├žin iyi ├žal─▒┼čt─▒.

 curl -X POST --data @json_out.txt http://localhost:8080/
 

Nerede,

-X Http fiilini ifade eder.

--data G├Ândermek istedi─činiz veri anlam─▒na gelir.


36







Sadece ayn─▒ problemle kar┼č─▒la┼č─▒yorum. Belirterek ├ž├Âzebilirim

 -H "Content-Type: application/json; charset=UTF-8"
 

33







CURL Windows kullanarak, ┼čunu deneyin:

 curl -X POST -H "Content-Type:application/json" -d "{\"firstName\": \"blablabla\",\"lastName\": \"dummy\",\"id\": \"123456\"}" http-host/_ah/api/employeeendpoint/v1/employee
 

28







Sen kullanabilirsiniz Postac─▒ sizin monte sezgisel GUI ile cURL komutu.

  1. Postac─▒ Y├╝kle ve Ba┼člat
  2. URLÔÇÖnizi, Posta Adresini, ─░stek ├ťstbilgilerini vb.
  3. T─▒klamak Code
  4. Se├ž cURL a├ž─▒lan listeden
  5. cURL komutunu kopyala ve yap─▒┼čt─▒r

Not: A├ž─▒l─▒r listede otomatik talep olu┼čturma i├žin birka├ž se├ženek vard─▒r, bu y├╝zden yaz─▒m─▒n gerekli oldu─čunu d├╝┼č├╝n├╝yorum.


25







Bir RESTful arabirimine kar┼č─▒ ├žok say─▒da JSON g├Ânderimi / yan─▒t─▒ test ediyorsan─▒z, Chrome i├žin Postac─▒ eklentisini (web hizmeti testlerini manuel olarak tan─▒mlaman─▒za olanak sa─člar) ve Node.js tabanl─▒ Newman komutunu kontrol etmek isteyebilirsiniz. -line arkada┼č─▒ (Postman testlerinin "koleksiyonlar─▒na" kar┼č─▒ testleri otomatikle┼čtirmenize izin verir.) Hem ├Âzg├╝r hem de a├ž─▒k!


19







HTTPie ├Ânerilen bir alternatiftir curl ├ž├╝nk├╝ sadece

 $ http POST http://example.com/some/endpoint name=value name1=value1
 

Varsay─▒lan olarak JSON'dan konu┼čur ve hem sizin i├žin gerekli ba┼čl─▒─č─▒ ayarlamay─▒ hem de verileri ge├žerli JSON olarak kodlamay─▒ idare eder. Ayr─▒ca birde ┼ču var:

 Some-Header:value
 

ba┼čl─▒klar i├žin ve

 name==value
 

sorgu dizesi parametreleri i├žin. B├╝y├╝k miktarda veri kayna─č─▒n─▒z varsa, JSON kodlanm─▒┼č bir dosyadan da okuyabilirsiniz:

  [email protected]
 

19


2017-11-08





Bu, ek olarak BASIC kimlik do─črulamas─▒n─▒ kullanarak benim i├žin iyi ├žal─▒┼čt─▒:

 curl -v --proxy '' --basic -u Administrator:password -X POST -H "Content-Type: application/json"
        --data-binary '{"value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true}'
        http://httpbin.org/post
 

Elbette, hi├žbir zaman SSL ve kontrol edilmi┼č bir sertifika olmadan BASIC kimlik do─črulamas─▒n─▒ kullanmamal─▒s─▒n─▒z.

Bug├╝n yine, Windows i├žin Cygwin'in cURL 7.49.1'sini kullanarak tekrar kar┼č─▒la┼čt─▒m ... Ve bir JSON arg├╝man─▒ kullan─▒rken --data veya kullan─▒rken --data-binary , cURL'un kafas─▒ kar─▒┼čt─▒ ve JSON'da {} URL ┼čablon olarak yorumlad─▒ . -g CURL globbing'i kapatmak i├žin bir arg├╝man eklemek bunu d├╝zeltti.

Ayr─▒ca bkz . K─▒vr─▒lmak i├žin k├Â┼čeli ayra├žl─▒ bir URL ge├žirme .


16







JSON i├žeri─činizi bir dosyaya koyabilir ve bu --file-upload se├žene─či a┼ča─č─▒daki gibi standart giri┼č se├žene─čini kullanarak k─▒vr─▒larak ge├žirebilirsiniz :

  echo 'my.awesome.json.function({"do" : "whatever"})' | curl -X POST "http://url" -T -
 

16







Bu benim i├žin ├žal─▒┼čt─▒:

 curl -H "Content-Type: application/json" -X POST -d @./my_json_body.txt http://192.168.1.1/json
 

15







Bir web sunucusuyla test etmek i├žin a┼ča─č─▒daki format─▒ kullan─▒yorum.

 use -F 'json data'
 

Bu JSON dict format─▒n─▒ varsayal─▒m:

 {
    'comment': {
        'who':'some_one',
        'desc' : 'get it'
    }
}
 

Tam ├Ârnek

 curl -XPOST your_address/api -F comment='{"who":"some_one", "desc":"get it"}'
 

9







CURL'ye d├Ân├╝┼čt├╝rmek i├žin postac─▒y─▒ kullanabilirsiniz.
g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


8







Y├╝k eklemek i├žin -d se├žene─čini kullan─▒n

 curl -X POST \
http://<host>:<port>/<path> \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"foo": "bar",
"lorem": "ipsum"
}'
 

Ek olarak:

POST y├Ântemini kullanmak i├žin -X POST kullan─▒n.

-H 'Accept: application / json' tipini kullan─▒n.

i├žerik t├╝r├╝ ba┼čl─▒─č─▒ eklemek i├žin -H 'Content-Type: application / json' kullan─▒n


4







Bu benim i├žin Windows10'da ├žal─▒┼čt─▒

 curl -d "{"""owner""":"""sasdasdasdasd"""}" -H "Content-Type: application/json" -X  PUT http://localhost:8080/api/changeowner/CAR4
 

4







Dahil edilecek dinamik verileriniz varsa, bunu yapman─▒n ba┼čka bir yolu.

 #!/bin/bash

version=$1
text=$2
branch=$(git rev-parse --abbrev-ref HEAD)
repo_full_name=$(git config --get remote.origin.url | sed 's/.*:\/\/github.com\///;s/.git$//')
token=$(git config --global github.token)

generate_post_data()
{
  cat <<EOF
{
  "tag_name": "$version",
  "target_commitish": "$branch",
  "name": "$version",
  "body": "$text",
  "draft": false,
  "prerelease": false
}
EOF
}

echo "Create release $version for repo: $repo_full_name branch: $branch"
curl --data "$(generate_post_data)" "https://api.github.com/repos/$repo_full_name/releases?access_token=$token"
 

3







L├╝tfen bu arac─▒ kontrol edin . Kolayca curl par├žac─▒klar─▒ olu┼čturman─▒za yard─▒mc─▒ olur.

 curl -XGET -H "Accept: application/json" -d "{\"value\":\"30\",\"type\":\"Tip 3\",\"targetModule\":\"Target 3\",\"configurationGroup\":null,\"name\":\"Configuration Deneme 3\",\"description\":null,\"identity\":\"Configuration Deneme 3\",\"version\":0,\"systemId\":3,\"active\":true}" "http://localhost:8080/xx/xxx/xxxx"
 

2







URL'nin sonu olarak, istedi─činiz bi├žimin uzant─▒s─▒n─▒ iletebilirsiniz. gibi http: // localhost: 8080 / xx / xx / xxxx .json

veya

http: // localhost: 8080 / xx / xxx / xxxx .xml

Not: pom'─▒n─▒za jackson ve jaxb maven ba─č─▒ml─▒l─▒klar─▒ eklemeniz gerekir.


-6