0Pricing
R Academy · Ders

GET ve POST Uç Noktaları Oluşturma

Yol parametrelerini ve sorgu dizelerini yönetin, istek gövdesini ayrıştırın.

GET ve POST Uç Noktaları Oluşturma, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

Plumber Nedir?

plumber, özel yorum açıklamalarını kullanarak sıradan R işlevlerini HTTP API uç noktalarına dönüştürür. Bir işleve #* @get /path açıklamasını eklediğinizde Plumber, bu işlevi çağıran bir GET rotası oluşturur ve sonucunu JSON olarak döndürür.

install.packages('plumber') ile kurun.

İlk GET Uç Noktanız

Temel bir Plumber API'si bir dosyada bulunur (ör. api.R). İşleve, ardından yolu gelecek şekilde #* @get açıklamasını ekleyin. Plumber, işlevin dönüş değerini otomatik olarak JSON'a serileştirir.

# api.R
# library(plumber)
#
# #* Return a greeting
# #* @get /hello
# function() {
#   list(message = 'Hello from Plumber!')
# }
#
# Start with:
# pr <- plumb('api.R')
# pr$run(port = 8000)

Tür İpuçlarıyla Yol Parametreleri

Açılı ayraç sözdizimini kullanarak değişken yol bölümleri ekleyin: /users/<id:int>. Plumber, bölümü ayrıştırır ve işlevinize türü belirtilmiş bir bağımsız olarak aktarır. Desteklenen türler arasında int, dbl ve chr bulunur.

# #* Get a user by ID
# #* @get /users/<id:int>
# function(id) {
#   # id is already an integer
#   list(
#     user_id = id,
#     name    = paste('User', id)
#   )
# }
#
# GET /users/42  =>  {"user_id":42, "name":"User 42"}

#* @param ile Sorgu Parametreleri

Sorgu parametrelerini #* @param name Description ile belgeleyin. Parametre adı, işlev bağımsızının adıyla aynı olmalıdır. Plumber, parametreyi sorgu dizesinden otomatik olarak okur — elle ayrıştırma gerekmez.

# #* Search users by name
# #* @param name The name to search for
# #* @param limit Maximum results to return
# #* @get /users/search
# function(name = '', limit = '10') {
#   limit <- as.integer(limit)
#   # query string: /users/search?name=Alice&limit=5
#   list(query = name, max = limit)
# }

POST Uç Noktası Oluşturma

İstek gövdesi alan uç noktalar için #* @post /path kullanın. Özel req bağımsızı, ham istek nesnesine erişim sağlar. İşlev bağımsızının adı req olduğunda Plumber bu nesneyi otomatik olarak aktarır.

# #* Create a new user
# #* @post /users
# function(req) {
#   body <- jsonlite::fromJSON(req$postBody)
#   # body$name, body$email are now available
#   list(
#     status  = 'created',
#     user_id = sample(1000:9999, 1),
#     name    = body$name
#   )
# }

İstek Gövdesini Ayrıştırma

req$postBody, POST gövdesindeki ham JSON dizesini içerir. Adlandırılmış bir R listesi elde etmek için jsonlite::fromJSON(req$postBody) ile ayrıştırın. İşleme başlamadan önce gerekli alanları her zaman doğrulayın.

# #* @post /orders
# function(req, res) {
#   body <- jsonlite::fromJSON(req$postBody)
#   if (is.null(body$product_id)) {
#     res$status <- 400L
#     return(list(error = 'product_id is required'))
#   }
#   list(
#     order_id   = as.integer(Sys.time()),
#     product_id = body$product_id,
#     quantity   = body$quantity %||% 1
#   )
# }

res$status ile HTTP Durum Kodları

res bağımsızı (Plumber tarafından otomatik olarak da eklenir), HTTP yanıt durum kodunu ayarlamanızı sağlar. Döndürmeden önce ayarlayın: res$status <- 404L. Yaygın kodlar:

  • 200 — OK (varsayılan)
  • 201 — Oluşturuldu
  • 400 — Hatalı İstek
  • 404 — Bulunamadı
  • 500 — Dahili Sunucu Hatası
# #* @get /items/<id:int>
# function(id, res) {
#   items <- list(
#     list(id=1, name='Widget'),
#     list(id=2, name='Gadget')
#   )
#   found <- Filter(function(x) x$id == id, items)
#   if (length(found) == 0) {
#     res$status <- 404L
#     return(list(error = paste('Item', id, 'not found')))
#   }
#   found[[1]]
# }

Adlandırılmış Listeleri JSON Olarak Döndürme

Plumber, R dönüş değerlerini jsonlite kullanarak JSON'a serileştirir. Adlandırılmış listeler JSON nesnelerine, adlandırılmamış listeler JSON dizilerine dönüşür. Yapılandırılmış yanıtlar için adlandırılmış bir liste döndürün.

# Named list => JSON object
# list(id=1, name='Alice')  => {"id":1, "name":"Alice"}
#
# Unnamed list => JSON array
# list(1, 2, 3)  =>  [1, 2, 3]
#
# Nested structures work too:
# list(
#   user   = list(id=1, name='Alice'),
#   orders = list(list(id=101), list(id=102))
# )
# => {"user":{"id":1,"name":"Alice"}, "orders":[{"id":101},{"id":102}]}

Plumber Yönlendirici Nesnesi

Açıklama eklenmiş bir R dosyasını plumb('api.R') ile yükleyerek bir Plumber router nesnesi oluşturun. Sunucuyu başlatmak için pr$run(port = 8000) çağrısını yapın. Üretim ortamında genellikle pr_run(pr, host='0.0.0.0', port=8000) çağrısını yaparsınız.

# Standard plumber startup in api_start.R:
# library(plumber)
# pr <- plumb('api.R')
# pr$run(port = 8000, host = '0.0.0.0')
#
# Or with pipe style:
# plumb('api.R') |> pr_run(port = 8000)
#
# Test with:
# curl http://localhost:8000/hello

Birden Çok HTTP Yöntemini Ele Alma

Aynı yol için ayrı açıklamalı işlevler yazarak birden çok yöntem desteklenebilir. Plumber, kullanılan HTTP yöntemine göre istekleri doğru işleve yönlendirir.

# #* List all products
# #* @get /products
# function() {
#   list(products = list(list(id=1, name='Widget')))
# }
#
# #* Create a product
# #* @post /products
# function(req) {
#   body <- jsonlite::fromJSON(req$postBody)
#   list(created = TRUE, name = body$name)
# }

API Uç Noktalarınızı Test Etme

Sunucu çalışırken uç noktaları test etmek için terminalden curl veya R üzerinden httr2 kullanın. httr2, API kodunuzla birlikte tekrarlanabilir testler yazmanıza olanak tanır.

# From terminal:
# curl http://localhost:8000/users/42
# curl -X POST http://localhost:8000/users \
#      -H 'Content-Type: application/json' \
#      -d '{"name":"Alice","email":"alice@example.com"}'
#
# From R:
# library(httr2)
# resp <- request('http://localhost:8000/users/42') |> req_perform()
# resp_body_json(resp)

Hızlı Kontrol: Yol Parametreleri

Plumber'ın tamsayı olarak ayrıştırması gereken ve adı id olan bir yol parametresini nasıl tanımlarsınız?

GET ve POST Uç Noktalarının Özeti

Plumber ile REST uç noktaları oluşturma:

  • #* @get /path bir GET rotası oluşturur; #* @post /path bir POST rotası oluşturur
  • Yol parametreleri <name:type> söz dizimini kullanır (int, dbl, chr)
  • Sorgu parametreleri, eşleşen işlev bağımsız değişkenlerine otomatik olarak ayrıştırılır
  • POST gövdesine jsonlite::fromJSON(req$postBody) aracılığıyla erişilebilir
  • 200 olmayan HTTP yanıtları için res$status değerini ayarlayın
  • Adlandırılmış listeler döndürün; bunlar otomatik olarak JSON nesnelerine dönüştürülür

Sıkça Sorulan Sorular

“GET ve POST Uç Noktaları Oluşturma” dersi ücretsiz mi?

Evet — “GET ve POST Uç Noktaları Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“GET ve POST Uç Noktaları Oluşturma” dersinde ne öğreneceğim?

Yol parametrelerini ve sorgu dizelerini yönetin, istek gövdesini ayrıştırın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“GET ve POST Uç Noktaları Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Plumber ve REST'e Giriş
  2. GET ve POST Uç Noktaları Oluşturma
  3. Kimlik Doğrulama ve API Güvenliği
  4. Plumber API'lerini Üretim Ortamına Dağıtma
← R Academy Sayfasına Dön