Custom endpointit ovat tehokas tapa rakentaa API-rajapintoja, webhook-vastaanottimia, AJAX-korvaajia ja integraatioita WordPressiin ilman raskaita plugin-ratkaisuja. Moni kehittäjä turvautuu tarpeettoman suuriin lisäosiin yksinkertaisten endpointtien rakentamiseen, vaikka WordPressin core tarjoaa lähes kaiken tarvittavan valmiiksi.
Endpoint on URL, joka palauttaa:...
Moderni ratkaisu on lähes aina:...
add_action('rest_api_init', function () { register_rest_route( 'myplugin/v1', '/status', [ 'methods' => 'GET', 'callback' => 'my_status_endpoint', ] ); }); 2. Callback-funktio function my_status_endpoint() { return [ 'status'...
function my_status_endpoint() { return [ 'status' => 'ok' ]; } Response:...
Voit määrittää:...
function endpoint($request) { $email = $request->get_param('email'); } Saatavilla:...
Tärkeä turvallisuudessa....
Jos endpoint on julkinen:...
Käytä:...
return new WP_Error( 'invalid_request', 'Missing parameter', ['status' => 400] ); 9. Route-versionointi Hyvä käytäntö:...
Hyvä käytäntö:...
Mahdollinen myös rewrite-ratkaisulla....
add_filter('query_vars', function($vars) { $vars[] = 'custom_api'; return $vars; }); 12. Template redirect endpoint add_action('template_redirect', function() { if (get_query_var('custom_api')) { wp_send_json([ 'success' => true ]); }...
add_action('template_redirect', function() { if (get_query_var('custom_api')) { wp_send_json([ 'success' => true ]); } }); Tämä on kevyt mutta REST API on yleensä parempi....
admin-ajax.php:...
Voit käyttää:...
Frontend-requesteissa:...
Suojaa endpointit abusea vastaan....
GET-endpointit voidaan cachettaa:...
Älä tee raskaita operaatioita endpointissa....
REST API sopii hyvin:...
Optimoi endpointit:...
Hyvä arkkitehtuuri:...
Moderni WordPress API stack:...
Moderni WordPress API stack:...
Custom endpointit voidaan rakentaa WordPressiin erittäin tehokkaasti ilman raskaita lisäosia käyttämällä REST APIa, kevyitä controller-rakenteita ja modernia request-käsittelyä....
Kevyt endpoint-arkkitehtuuri parantaa:
- suorituskykyä
- turvallisuutta
- ylläpidettävyyttä
- skaalautuvuutta
Samalla vältetään:
- admin-ajax.php pullonkaulat
- plugin-bloat
- ylimääräinen memory usage
- monimutkainen dependency stack
Mitä custom endpoint tarkoittaa
Endpoint on URL, joka palauttaa:
- JSON-dataa
- webhook-vastauksen
- tiedoston
- autentikointivastauksen
- custom HTML:n
Esimerkki:
example.com/wp-json/myplugin/v1/orders
Tai:
example.com/api/export
Paras tapa: WordPress REST API
Moderni ratkaisu on lähes aina:
register_rest_route()
Hyödyt:
- kevyt
- core-yhteensopiva
- turvallinen
- helposti versionoitava
- JSON-native
1. Yksinkertainen endpoint
add_action('rest_api_init', function () {
register_rest_route(
'myplugin/v1',
'/status',
[
'methods' => 'GET',
'callback' => 'my_status_endpoint',
]
);
});
2. Callback-funktio
function my_status_endpoint() {
return [
'status' => 'ok'
];
}
Response:
{
"status": "ok"
}
3. HTTP-metodit
Voit määrittää:
GET
POST
PUT
PATCH
DELETE
Esimerkki:
'methods' => 'POST'
4. Request-parametrien käsittely
function endpoint($request) {
$email = $request->get_param('email');
}
Saatavilla:
- query parametrit
- body data
- headerit
5. Permission callback
Tärkeä turvallisuudessa.
'permission_callback' => function () {
return current_user_can('manage_options');
}
Ilman tätä endpoint voi olla avoin kaikille.
6. Public endpointit
Jos endpoint on julkinen:
'permission_callback' => '__return_true'
Mutta validoi data aina.
7. JSON response oikein
Käytä:
return rest_ensure_response($data);
Tämä varmistaa oikean REST-response-rakenteen.
8. Virheiden palautus
return new WP_Error(
'invalid_request',
'Missing parameter',
['status' => 400]
);
9. Route-versionointi
Hyvä käytäntö:
myplugin/v1
myplugin/v2
Älä riko vanhoja endpointteja.
10. Endpoint ilman REST APIa
Mahdollinen myös rewrite-ratkaisulla.
add_rewrite_rule(
'^api/test/?',
'index.php?custom_api=1',
'top'
);
11. Query var
add_filter('query_vars', function($vars) {
$vars[] = 'custom_api';
return $vars;
});
12. Template redirect endpoint
add_action('template_redirect', function() {
if (get_query_var('custom_api')) {
wp_send_json([
'success' => true
]);
}
});
Tämä on kevyt mutta REST API on yleensä parempi.
13. Miksi admin-ajax kannattaa välttää
admin-ajax.php:
- lataa admin-bootstrapin
- raskaampi
- hitaampi korkeassa liikenteessä
REST API:
- kevyempi
- modernimpi
- paremmin cachettava
14. Authentication vaihtoehdot
Voit käyttää:
- cookie auth
- nonce
- JWT
- Application Passwords
- API keyt
15. Nonce-suojaus
Frontend-requesteissa:
wp_create_nonce('wp_rest');
JS:
headers: {
'X-WP-Nonce': nonce
}
16. Rate limiting
Suojaa endpointit abusea vastaan.
Esimerkki:
$key = 'api_' . $_SERVER['REMOTE_ADDR'];
Tallennus:
- transient
- Redis
- custom table
17. Cachettavat endpointit
GET-endpointit voidaan cachettaa:
CDN
↓
Edge cache
↓
REST API
Tämä vähentää serverikuormaa merkittävästi.
18. Background processing
Älä tee raskaita operaatioita endpointissa.
Huono:
API request
↓
Massive import
Parempi:
API request
↓
Queue job
↓
Background worker
19. Webhook endpointit
REST API sopii hyvin:
- Stripe webhookeihin
- GitHub webhookeihin
- CRM-integratioihin
Tärkeää:
- signature validation
- logging
- retry handling
20. Performance optimointi
Optimoi endpointit:
- vältä raskaita WP_Queryjä
- käytä object cachea
- minimoi bootstrap
- cachetaa GET-responseja
- käytä batch processingia
21. Dependency injection endpointteihin
Hyvä arkkitehtuuri:
Route
↓
Controller
↓
Service
↓
Repository
Ei kaikkea callback-funktioon.
22. Yleisimmät virheet
- admin-ajax käyttö kaikkeen
- ei permission callbackia
- raskaat queryt endpointissa
- ei rate limitingiä
- duplicate endpoint-logiikka
- liian isot response payloadit
- ei validointia
23. Paras moderni endpoint-arkkitehtuuri
Moderni WordPress API stack:
REST Route
↓
Middleware
↓
Controller
↓
Service Layer
↓
JSON Response
Yhteenveto
Custom endpointit voidaan rakentaa WordPressiin erittäin tehokkaasti ilman raskaita lisäosia käyttämällä REST APIa, kevyitä controller-rakenteita ja modernia request-käsittelyä.
Kun endpointit suunnitellaan suorituskyky ja turvallisuus edellä, WordPress pystyy toimimaan vakaana API-alustana myös vaativissa integraatioissa ja korkeassa liikenteessä.