Curl komutunu koda dönüştür

Tarayıcınızın ağ sekmesinden "Copy as cURL" seçeneğiyle doğrudan kopyaladığınız bir komut da dahil olmak üzere herhangi bir cURL komutunu yapıştırın ve aynı isteğin dokuz dilde yazılmış halini görün. Komut sayfada ayrıştırılır: yöntem, URL, başlıklar ve gövde okunur ve ardından yeniden oluşturulur, böylece geri gelen şey, URL'nizin içine yerleştirildiği bir şablon değil, yapıştırdığınız istektir.

Worked example

This command:

curl -X POST 'https://funapi.dev/api/friends/v1/characters' \
  -H 'Authorization: Bearer qa-admin-token' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Gunther","job":"Head barista"}'

is parsed as POST https://funapi.dev/api/friends/v1/characters with 2 header(s) and a 39-byte body, and converts to:

JavaScript (fetch)

const res = await fetch("https://funapi.dev/api/friends/v1/characters", {
  method: "POST",
  headers: {
    "Authorization": "Bearer qa-admin-token",
    "Content-Type": "application/json"
  },
  body: "{\"name\":\"Gunther\",\"job\":\"Head barista\"}"
});
console.log(res.status, await res.json());

JavaScript (axios)

import axios from 'axios';

const res = await axios({
  method: "post",
  url: "https://funapi.dev/api/friends/v1/characters",
  headers: {
    "Authorization": "Bearer qa-admin-token",
    "Content-Type": "application/json"
  },
  data: {"name":"Gunther","job":"Head barista"}
});
console.log(res.status, res.data);

Python (requests)

import requests

url = "https://funapi.dev/api/friends/v1/characters"
headers = {
    "Authorization": "Bearer qa-admin-token",
    "Content-Type": "application/json"
}
payload = {"name":"Gunther","job":"Head barista"}

res = requests.post(url, headers=headers, json=payload)
print(res.status_code, res.json())

Git (ağ/http)

package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	req, _ := http.NewRequest("POST", "https://funapi.dev/api/friends/v1/characters", strings.NewReader("{\"name\":\"Gunther\",\"job\":\"Head barista\"}"))
	req.Header.Set("Authorization", "Bearer qa-admin-token")
	req.Header.Set("Content-Type", "application/json")
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(res.StatusCode, string(out))
}

C# (HttpClient)

using var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, "https://funapi.dev/api/friends/v1/characters");
req.Headers.TryAddWithoutValidation("Authorization", "Bearer qa-admin-token");
req.Content = new StringContent("{\"name\":\"Gunther\",\"job\":\"Head barista\"}", Encoding.UTF8, "application/json");
var res = await client.SendAsync(req);
Console.WriteLine((int)res.StatusCode);
Console.WriteLine(await res.Content.ReadAsStringAsync());

Java (RestAssured)

given()
    .header("Authorization", "Bearer qa-admin-token")
    .header("Content-Type", "application/json")
    .body("{\"name\":\"Gunther\",\"job\":\"Head barista\"}")
.when()
    .post("https://funapi.dev/api/friends/v1/characters")
.then()
    .statusCode(200);

Oyun yazarı

import { test, expect } from '@playwright/test';

test('POST request', async ({ request }) => {
  const res = await request.post("https://funapi.dev/api/friends/v1/characters", {
  headers: {
    "Authorization": "Bearer qa-admin-token",
    "Content-Type": "application/json"
  },
  data: {"name":"Gunther","job":"Head barista"}
});
  expect(res.status()).toBe(200);
});

k6

import http from 'k6/http';
import { check } from 'k6';

export default function () {
  const res = http.request("POST", "https://funapi.dev/api/friends/v1/characters", "{\"name\":\"Gunther\",\"job\":\"Head barista\"}", { headers: {
    "Authorization": "Bearer qa-admin-token",
    "Content-Type": "application/json"
  } });
  check(res, { 'status is 200': r => r.status === 200 });
}

HTTPie

echo "{\"name\":\"Gunther\",\"job\":\"Head barista\"}" | http POST "https://funapi.dev/api/friends/v1/characters" Authorization:"Bearer qa-admin-token" Content-Type:"application/json"

Neleri ele alıyor?

cmd.exe'nin kullandığı ters eğik çizgi satır devamlılıkları ve şapka işareti biçimi, kaçış karakterleriyle tek ve çift tırnak işaretleri, tekrarlanan -H başlıkları, curl'ün birleştirdiği şekilde birleştirilen tekrarlanan -d gövdeleri, Authorization başlığına normalleştirilen -u temel kimlik doğrulaması ve bir geliştirici araçları kopyasının getirdiği bayrak yığını (--compressed, -s, -L, --max-time ve benzerleri), URL ile karıştırılmak yerine tanınır ve atlanır.

Açıkça belirttiği iki şey

Curl, bir gövde ve yöntem belirtmediğinizde varsayılan olarak POST yöntemini kullanır ve sizin hiç yazmadığınız bir içerik türü belirler. Listedeki diğer tüm istemciler ise bunların hiçbirini yapmaz. Bu nedenle, dönüştürülmüş bir isteğin çalışmayı durdurmasının en yaygın yolu, curl komutunun örtük yarısının istekle birlikte gelmemesi olduğundan, her ikisi de çıktıda açıkça belirtilir — çıkarılmış bir POST ve çıkarılmış bir Content-Type.

Reddettiğinde

Değer alabilecek bilinmeyen bir bayrak, atlanmak yerine dönüştürmeyi durdurur; çünkü atlanması, ardından gelen URL'yi yutacak ve makul, yanlış bir sonuç üretecektir. Dengesiz bir alıntı da aynı şeyi yapar. Hatasını yüksek sesle dile getiren bir dönüştürücü, tahmin yürüten bir dönüştürücüden daha değerlidir.

Diğer araçlar

Tüm araçlar · Başlangıç rehberi · 39 mock REST API’nin tamamı

Son güncelleme