# retrofit-spring-boot-starter
[English](../en/README.md) | [简体中文](../../README.md) | [繁體中文](../tw/README.md) | [日本語](../ja/README.md) | [한국어](../ko/README.md) | [Español](../es/README.md) | **Türkçe** | [Русский](../ru/README.md)
[](https://www.apache.org/licenses/LICENSE-2.0.html)

[](https://docs.oracle.com/en/java/javase/17/)
[](https://docs.spring.io/spring-boot/)
**[retrofit](https://square.github.io/retrofit/) HTTP API'leri Java arayuzlerine donusturmeyi destekler. Bu bilesen Retrofit'i Spring Boot ile derinlemesine entegre eder ve Cesitli pratik islevsel iyilestirmeleri destekler.**
- **Spring Boot 3.x/4.x projeleri** icin retrofit-spring-boot-starter **4.x** surumunu kullanin
- Spring Boot 4.x varsayilan olarak Jackson 3 kullanir, ancak bu bilesenin varsayilan Converter'i Jackson 2'dir. Bu nedenle **Spring Boot 4.x projeleri icin global Converter'i Jackson 3 olarak ayarlamaniz onerilir**
- Yapilandirma yontemi: `retrofit.global-converter-factories=com.github.lianjiatech.retrofit.spring.boot.core.jackson3.Jackson3ConverterFactory`
- **Spring Boot 1.x/2.x projeleri** icin [retrofit-spring-boot-starter 2.x](https://github.com/LianjiaTech/retrofit-spring-boot-starter/tree/2.x) surumunu kullanin. Spring Boot 1.4.2 ve ust surumleri destekler.
GitHub: [https://github.com/LianjiaTech/retrofit-spring-boot-starter](https://github.com/LianjiaTech/retrofit-spring-boot-starter)
Gitee: [https://gitee.com/lianjiatech/retrofit-spring-boot-starter](https://gitee.com/lianjiatech/retrofit-spring-boot-starter)
## Hizli Baslangic
### Bagimlilik Ekleme
```xml
com.github.lianjiatech
retrofit-spring-boot-starter
4.2.0
```
Cogu Spring Boot projesinde bagimliligi eklemek yeterlidir. Bagimlilik enjeksiyonu sonrasinda bilesen calismazsa, sunlari deneyebilirsiniz:
#### Manuel Otomatik Yapilandirma Icerigi
Bazi durumlarda `RetrofitAutoConfiguration` dogru bir sekilde Yuklenemeyebilir. Manuel yapilandirma icagrisi icin su kodu kullanin:
```java
@Configuration
@ImportAutoConfiguration({RetrofitAutoConfiguration.class})
public class SpringBootAutoConfigBridge {
}
```
Proje hala Spring XML yapilandirma dosyalarini kullanirsa, Spring Boot otomatik yapilandirma sinifini XML dosyasina ekleyin:
```xml
```
### HTTP Java Arayuzu Tanimlama
**Arayuzlerde `@RetrofitClient` ek aciklamasi ile isaretlenmelidir!**
```java
@RetrofitClient(baseUrl = "http://localhost:8080/api/user/")
public interface UserService {
/**
* ID ile kullanici adi sorgulama
*/
@POST("getName")
String getName(@Query("id") Long id);
}
```
> Not: **Yontem istek yollarinda `/` ile baslamaya dikkat edin**. Retrofit icin, `baseUrl = http://localhost:8080/api/test/` oldugunda:
> - Yontem yolu `person` ise tam URL: `http://localhost:8080/api/test/person`.
> - Yontem yolu `/person` ise tam URL: `http://localhost:8080/person`.
### Enjeksiyon ve Kullanim
**Arayuzu diger Service'lere enjekte ederek kullanabilirsiniz!**
```java
@Service
public class BusinessService {
@Autowired
private UserService userService;
public void doBusiness() {
// userService yontemlerini cagir
}
}
```
**Varsayilan olarak, `RetrofitClient` arayuzleri Spring Boot bilesen tarama yolu ile otomatik olarak kaydedilir**. Alternatif olarak, bir yapilandirma sinifinda `@RetrofitScan` kullanarak ozel bir tarama yolu belirleyebilirsiniz.
## HTTP Istek Ek Aciklamalari
HTTP istek ile ilgili ek aciklamalar Retrofit'in yerel ek aciklamalarini kullanir. Kisa bir ozet asagida sunulmustur:
| Ek Aciklama Kategorisi | Desteklenen Ek Aciklamalar |
|-------------------------|----------------------------|
| Istek Yontemleri | `@GET` `@HEAD` `@POST` `@PUT` `@DELETE` `@OPTIONS` `@HTTP` |
| Istek Basliklari | `@Header` `@HeaderMap` `@Headers` |
| Sorgu Parametreleri | `@Query` `@QueryMap` `@QueryName` |
| Yol Parametreleri | `@Path` |
| Form Parametreleri | `@Field` `@FieldMap` `@FormUrlEncoded` |
| Istek Govdesi | `@Body` |
| Dosya Yukleme | `@Multipart` `@Part` `@PartMap` |
| URL Parametreleri | `@Url` |
> Detaylar icin resmi belgelere bakin: [Retrofit Resmi Belgesi](https://square.github.io/retrofit/)
## Ozellik Vurgulari
- [x] [HTTP Yanit Sonuclari Otomatik Uyarlama](response-adaptation.md)
- [x] [Veri Donusturucu](converter.md)
- [x] [OkHttpClient ve Call.Factory SPI](okhttp-client.md)
- [x] [Yontem Duzeyi Zaman Asimi Yapilandirmasi](timeout.md)
- [x] [Log Kaydi](logging.md)
- [x] [Istek Yeniden Deneme](retry.md)
- [x] [Kesistiriciler](interceptor.md)
- [x] [Devre Kesici / Dusurme](degrade.md)
- [x] [Hata Kod Cozucu](error-decoder.md)
- [x] [Metrik Izleme (Micrometer)](metrics.md)
- [x] [Actuator Endpoint](actuator.md)
- [x] [GraalVM Native Image / AOT Destegi](aot.md)
- [x] [Mikro Servisler Arasi HTTP Cagrisi](microservice.md)
- [x] [RetrofitClient Ek Aciklamasi](custom-annotation.md)
- [x] [Yapilandirma Ozellikleri](configuration.md)
- [x] [Diger Ozellik Ornekleri](examples.md)
- [x] [Sikca Sorulan Sorular](faq.md)