Sembra che tu abbia un caso d'uso abbastanza standard e non hai molta esperienza con le API. In tal caso potrebbe essere sensato utilizzare uno dei framework disponibili che fornisce un'API in modo da poter concentrarsi sui requisiti aziendali. Sembra anche un modo più sicuro per andare e ti darà un po 'di esperienza sulle possibili implementazioni.
Il problema di sicurezza che sembra essere: voglio solo ricevere richieste dall'app / dispositivo reale. Corretto?
Il problema è irrisolvibile a meno che tu non abbia il pieno controllo sui dispositivi.
Se hai il controllo completo (come dispositivi personalizzati / dispositivi gestiti MDM):
Installa un certificato o qualche altra chiave di sicurezza sui dispositivi e consenti l'accesso solo se hanno un certificato valido.
Situazione normale (smartphone, tabelle ecc.):
Non basare la tua sicurezza sul dispositivo stesso ma l'utente ha effettuato l'accesso (credenziali). In genere non ti interessa troppo del dispositivo che sta usando un utente. Tieni l'utente giusto a ottenere i permessi giusti.
Che cos'è REST in questo contesto?
Il tuo POST sul server ha alcune cose che hanno bisogno di definizione: a quale URL lo mandi? Quale formato di dati invii (JSON / XML / POST / etc)? Come rispondi? Cosa spedisci quando si verifica un errore?
Tutte queste domande sono (provate) a cui risponde REST. Quindi usi uno standard del settore per lavorarci.
Una famosa alternativa è SOAP, quindi puoi trovare alcune cose per confrontare REST con.
Quindi l'implementazione è più probabile:
-
Crea l'API con uno strumento (Zend Framework, CakePHP, Laravel, ecc.) che ti aiuta a configurare un'API abbastanza rapidamente. Da quel momento puoi accettare la richiesta POST.
-
Implementa uno schema di sicurezza, la maggior parte degli strumenti ha alcune soluzioni predefinite integrate. Quindi il tuo POST contiene un nome utente + password OPPURE qualche chiave di sicurezza API.
-
Implementa la logica aziendale. Ottieni i dati grezzi (come JSON dal POST) automaticamente convertiti in un tipo di tipo nativo come un oggetto o un array in modo da poterlo utilizzare immediatamente.
Puoi anche usare il framework per rispondere nel formato giusto o per aumentare gli errori quando necessario. Li rimanderà al tuo cliente nel formato previsto giusto.
-
Sul tuo client, per inviare il POST, puoi anche utilizzare alcuni strumenti standard per effettuare la richiesta. Se il tuo client è un dispositivo Javascript, puoi usare qualsiasi cosa da jQuery ($ .post) a un'implementazione nativa. Quando hai uno script PHP come client API puoi utilizzare l'aiuto di Guzzle ad esempio: link Qui puoi trovare un esempio di autenticazione di base.