Need help Picking the right Wi-Fi Shield

Hi there, I am fairly new to the Arduino world and i am working on a project that requires an Arduino board set as a Server… I have no experience with Arduino Shields so i need your help to pick the right Wi-Fi Shield, all i need is :
1- A Wi-Fi Shield that is Compatible with Uno R3 and can set the Arduino as a Web-Server.
2- Well Documented Library.

after searching on Amazon i found this one :

https://www.amazon.com/Arduino-WiFi-Shield/dp/B00E4WTEFC/ref=sr_1_16?ie=UTF8&qid=1467144397&sr=8-16&keywords=arduino+wifi+shield

it seems to be the original one, but it is fairly expensive and i also heard about some problems regarding the Firmware , searched again and found this :

https://www.amazon.com/Gowoops-ESP8266-Expansion-ATmega328P-Development/dp/B01ABTS326/ref=sr_1_8?ie=UTF8&qid=1467141775&sr=8-8&keywords=arduino+wifi+shield

the Price is good and it seems to have the ability to set the Arduino as a Server but i can’t see where i can get the Library for this board…

Please would you kindly recommend me a particular Shield ?

thanks for your time

If you are in the USA, check Sparkfun.com or Adafruit.com

It looks like the items being sold on Amazon for such low prices are not Arduinos - they're some kind of knock-offs.

They may work fine, but I'd expect them to pose the same problem as genuine Arduinos. That is, the Uno doesn't have much memory. Not for variable data. Not for program space. A small program is likely take up more memory than an Uno has after you get done adding libraries for wifi and web serving.

Check out the Arduino Wifi 101, and you'll find a note to this effect.

I'm using a Wifi 101 with an Arduino Zero and that works fine. But this combination will cost a good bit more than the Amazon "bargain".

mFar:
https://www.amazon.com/Gowoops-ESP8266-Expansion-ATmega328P-Development/dp/B01ABTS326/ref=sr_1_8?ie=UTF8&qid=1467141775&sr=8-8&keywords=arduino+wifi+shield

the Price is good and it seems to have the ability to set the Arduino as a Server but i can't see where i can get the Library for this board...

I have a couple of those DOIT ESP8266 shields. You could save a bit of money if you buy it on aliexpress but you will have to wait for it to ship from China. It comes with a proprietary firmware that I don't think there are any libraries written for but you should be able to work with it pretty easily without a library. the documentation is at Introduction | ESP8266-Based Serial WiFi Shield for Arduino----User Manual. You can use a serial USB adapter to flash the ESP8266 with the standard AT firmware. After doing that there are several libraries you can use with it. The one I've been using is GitHub - bportaluri/WiFiEsp: Arduino WiFi library for ESP8266 modules. The only problem with that library is that the author left debug output on, printing to Serial, which is what the ESP8266 shield is connected to so you will need to edit the library to turn debug output off by changing the WiFiEsp/src/utility/debug.h line 31(WiFiEsp/debug.h at master · bportaluri/WiFiEsp · GitHub) from:

#define _ESPLOGLEVEL_ 3

to

#define _ESPLOGLEVEL_ 0

After flashing the AT firmware and fixing the library I've found this shield to work well but it's a bit tricky because the ESP8266 is connected to the Arduino Uno via Serial so you can't use the Serial Monitor for output as you normally would. This means you are kind of working blind, not a very beginner friendly situation. You could connect a serial USB adapter to different pins and use it with the SoftwareSerial library for output or use the shield on an Arduino Leonardo where it will be connected to Serial1 and you can still use Serial normally. Of course you could connect the shield to the Arduino differently using jumper wires but that kind of defeats the purpose of using a shield.

The Uno definitely has enough memory to work with this shield as a server though of course you are limited in what you can do. Here's what the Arduino IDE 1.6.9 reports from compiling the WiFiEsp library WebServerLed example sketch(WiFiEsp/WebServerLed.ino at master · bportaluri/WiFiEsp · GitHub) modified to communicate with ESP8266 on Serial and with debug output disabled:

Sketch uses 12,242 bytes (37%) of program storage space. Maximum is 32,256 bytes.
Global variables use 630 bytes (30%) of dynamic memory, leaving 1,418 bytes for local variables. Maximum is 2,048 bytes.

That's a pretty simple sketch but there's still quite a bit of room to expand it.