Framework to write PHP web service - php

Is there a specific framework out there for PHP to write a REST web service and expose it to JSON?
Or you just basically code it...
I am writing a REST web service, mostly to communicate with a database in MySQL, authentication, etc...
What advantages is there with a framework? Is it more secure?

Have a look at Frapi. Here is the documentation for it.
As for the reasoning, similar to a normal PHP framework.
Documentation
Support
Community
Multiple devs contributing
Not re-inventing the wheel
etc etc

Check out http://www.recessframework.org/

The package Zend.Rest [1] is very nice!
[1] http://framework.zend.com/manual/en/zend.rest.html

Related

Using ExtJS4 + PHP with RESTful web services

I want to build an app using ExtJS 4 and PHP.
I will follow the MVC pattern with ExtJS 4.
However, I want to use RESTful webservices with PHP.
Yet I am not sure how to proceed.
How can I call for Web Services that are PHP functions?
How am I going to give the directory like structure to my links?
You can obviously use Ext.Ajax.request() to craft any RESTful URls that you want. However, be sure to check out the REST proxy that's built into Ext JS's data package. By connecting this to your store/model, you can dynamically generate RESTful URLs which can be used for the vast majority of your generic CRUD operations.
RE: the PHP side, that's a big question. Fortunately, there are literally a billion turtorials on creating RESTful services in PHP, so I'd dust off your Google-fu and start there. Here's a very simple introduction that just happens to use PHP: http://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest--net-16340
You are most likely looking for Ext.Ajax.request.
There are some examples of Ext.Ajax.request from this stack overflow article.

SaaS Application start from scratch

In terms of expansion of my knowledge, I would like to try to make an SaaS application. I dont really care of app funcionality, but I would like to learn about technology behind it. So my question is, would be someone so kind and show me where to start? some good reading, tutorials, articles or books? I am most interested in:
every user, after registration, has its own playground at username.domain.com
app should use some kind of master script which will generate content for all users
what are pitfalls of such app?
what technology backend is needed?
I am open to Ruby on Rails solution. Sorry for my bad english, hope I make it clear. Thanks
You want to build a multi-tenant solution.
Some things to consider:
Each one of your users should have an isolated database. This means you need to choose a database driver that can switch the database at run time. The id of database could be based on the user-part of the domain.
You can use Devise+cancan for registration. But you will need to redefine some Devise controllers so that they take in consideration the database.
You may consider reading Service-Oriented Design with Ruby and Rails by Paul Dix. It has a lot of interesting ideas that you can use to build an efficient service oriented app, which undoubtedly is the kind architecture that you should strive to create.
I suggest that you use Heroku to host your application. MongoHQ would be very nice for the databases - and they have an api to make CRUD on databases programatically.
And finally, remember to fully test your application. Capybara plus Steak for integration testing, RSpec for models and controllers and Jasmine for Javascript.
Also, don't implement your own payment system. There are a lot of providers that you can use like http://recurly.com/.
You may want to take a look at the Rails kit at http://railskits.com/saas/
If you prefer to build it your self, take a look at http://www.chargify.com to handle your payments.
Check the page SaaS application development using PHP in Zend Framework it provide details about building a SaaS appliation in PHP Language.
Have a look at this tutorial. It's exactly what you are asking for:
http://anantgarg.com/2013/06/10/build-a-php-saas-app-from-scratch/
This is for PHP, but you can easily adapt it to RoR.

IOS Web Service Recommendations

I have a MYSQL server setup. What are my option for developing a IOS web server that will allow me to do CRUD with the IOS devices.
Please help it will greatly be appreciated. This my first stackoverflow post, being getting recommendations to join this site..
I would recommend an Apache2/PHP/MySQL stack for developing a web service for use with an iOS application. Consider using one of the common PHP frameworks such as codeIgnitor or cakePHP and sending your output in JSON format (not SOAP -- too much overhead).
PHP with a framework (as mentioned by Casey) and Ruby on Rails are probably the two most common solutions -- lots of resources for both here on SO
RobyOnRails absolutely! Because you can use RESTful web services with ease, and there is great RESTKit objective-c framework for object-mapping and abstract layer for network requests.
Though I haven't used this, I'm fan of http://getfrapi.com/ it is right tool for the job.

How to write a REST API?

I'm writing an iPhone app as a hobby project and it will need a web service to provide it with data. It's not very different from what I do at work, but at work I only write views and controllers. Someone else is responsible for writing the model and usually the clients provide the web service.
I have done some web programming before, back when everyone were using MySQL and PHP, so my skills are a bit outdated, but I'm confident that I would be able to pull it of using the techniques I already know. However, I don't want to waste my time using obsolete tools. I've figured out that the state of the art would be to write a REST API. I was thinking that there should be some pretty good frameworks out there that pretty much just gives you a REST API with CRUD functionality as soon as you've defined a model.
I guess my question is: What would be the fastest way to get a REST API up and running? I really just want to focus on writing the iPhone app and not spend too much time on this API. It would be great if I could get web administration and revision history too. I should also add that the API isn't supposed to be public, so support for authentication would be great as well.
Just to be clear. I wouldn't mind a PHP framework. In fact it could possibly be better since I know that my current hosting supports it.
EDIT:
The links below which apparently were good for 3 years are no longer working so I went and found a couple of new tutorials that I think are going to stick around for a while. These are on the Ray Wenderlich site, a very well respected ios dev tutorial site. The first article actually references the broken links below but it is complete within itself:
How To Write A Simple PHP/MySQL Web Service for an iOS App
and the second one has a little twist to it. It used parse.com on the backend and AFNetworking. Both of which are quite excellent.
How To Synchronize Core Data with a Web Service – Part 1
I have fixed the broken links below by finding the articles in the way back machine. People seem to like the links so I will keep them. The links above should provide more food for thought.
I am doing exactly the same thing with my iphone app. I found this article on building a RESTful API in PHP:
https://web.archive.org/web/20130910164802/http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
and there is also a followup article here:
https://web.archive.org/web/20130323001500/http://www.gen-x-design.com/archives/making-restful-requests-in-php/
with a link to source code at the bottom of the article.
I have programmed a REST API in ZEND Framework using the Zend_Rest_Controller, on the iPhone I used ASIHTTPRequest. My experience with both where good. At the beginning I had some trouble setting up ZEND and connecting it to mySQL, but once I figured out how to do it I was able to write the API very quickly. I can share more information with you if you have any further questions.
EDIT: There seems to be no official documentation on Zend_Rest_Controller. This link describes how to use it to create your API. You simply have to disable rendering in the init() of your subclass and implement the methods for each REST call.
Just to let you know:
I ended up using Ruby on Rails.
EDIT: Since this answer has been downvoted for not providing the reason behind choosing Ruby on Rails and also no instructions on how to write a REST API with it, I thought I would give you my motivation and some simple instructions.
I started reading a book about Ruby on Rails and realized that all I needed to do was to use scaffolding and I got a JSON REST API for free.
Here's a good guide to get you started: http://guides.rubyonrails.org/getting_started.html
When you have your Ruby on Rails environment up and running, creating your REST API isn't harder than running:
$ rails generate scaffold Post name:string title:string content:text
(Example from the above link.) I also found that Rails is very easy and free to deploy to heroku, which meant that I didn't have to pay for hosting for my very basic, low traffic, REST API. There are many other reasons why I am very happy to work with Ruby on Rails, but that's beyond the context of this question.
I followed a quite simple tutorial for creating RESTful APIs with PHP:
Corey Maynard - Creating a RESTful API with PHP
The main concept includes:
one abstract class that handles the parsing of the URI and returning the response, and
one concrete class that consists of just the endpoints for the API.
What about Python?
I'd use Python, Django and Piston.
I'd generate Django models from your
existent DB using inspectdb.
Add the Django admin to your models.
Add Django Piston to your app.
Profit.
With no experience with Python or Django probably it'll take you a day to develop this solution and all code is unit tested and proved to work.
If you want to use PHP I recommend using the CodeIgniter framework with Phil Sturgeon's REST server:
http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2
https://github.com/philsturgeon/codeigniter-restserver
Checkout the following PHP class that follows MVC.
http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html
Hope this helps.
If you already know PHP, there's nothing wrong with a PHP/MySQL backend. You can send all responses in iPhone-compatible plist xml format, and instantly turn the response into a NSDictionary/NSArray/NSNumber data structure with this short snippet of code:
NSString *response = [request responseString];
NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding];
NSPropertyListFormat format;
NSString *errorStr;
NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData
mutabilityOption:NSPropertyListImmutable
format:&format
errorDescription:&errorStr];
I also use the ASIHTTP package for forming URLs, sending asynchronous requets, and receiving the responses, I highly recommend it:
http://allseeing-i.com/ASIHTTPRequest/
You should use whatever languages you are comfortable with for the web service. Any language that can formulate REST responses to requests is fine.
That said, if you want to get something running quickly, I suggest using Python on Google App Engine. It's free and you can use Java instead of Python if you so desire. App Engine supports authentication using OpenID and/or Google Accounts (not sure if they're mutually exclusive) so that should make things easier to code.
As far as making the requests on the iOS device, I suggest using ASIHTTPRequest.
Another option is restSQL, an ultra-lightweight persistence framework. See http://restsql.org. It supports MySQL and PostgreSQL and runs in a standard Java EE container, e.g. Apache Tomcat.
restSQL is a very unconventional data access layer. restSQL is not an object-oriented view of the database. It presents flat or hierarchical "views" of relational database tables. These views are query-able and updatable through a simple REST-based HTTP or Java API. The HTTP interface is based on REST principles, which use HTTP’s built-in features, rather than abstracting away from them.
You want a 'REST API with CRUD functionality' and that's exactly restSQL's sweet spot. You could do this with no code. Simply define your SQL Resources via XML files and start doing HTTP calls against them with full CRUD capability.

Is it possible to integrate user databases between Drupal and an ASP&SQL Server platform?

We have a game project designed on ASP&SQL Server, and we need to integrate it's user database with Drupal.
This would be easier from Project to Drupal (since there is user_save and user_delete functions available globally by using drupal bootstrap) but I'm not sure if we can execute PHP functions on an ASP platform.
Is there any documentation for this kind of problems? What do you suggest?
First of all, I think you should rethink your strategy. Why did you choose ASP & MSSQL and why did you choose Drupal?
But if you really want to stick with it I guess by far the easiest way would be to write a PHP (SOAP) webservice that can be used to interact with Drupal (ie. add/delete users) using the Drupal API, and call this from your ASP code.
****edit****
You could use the SOAP Server and Services modules of Drupal. Or just write a plain and simple webservice from scratch using the PHP soap classes.
If you're just looking to use the games user database for authentication I know Drupal has a few modules that allow for authentication via external services. I believe basic or digest HTTP is pretty straightforward but it probably wouldn't be too difficult to write a services layer on the ASP app. Check out Drupal's "user access/authentication" section for ideas on external authentication.
you can build your own drupal module and build an api that exposes everything you want to do, im pretty sure asp.net has a lib or something should be out there to build a simple xml-rpc, rest client, avoid soap, you will add an extra layer that you dont really need

Categories